Programmable calculator including magnetic reading and recording means

ABSTRACT

A modular read-write and read-only memory unit capable of employing both direct and indirect decimal and symbolic addressing, a central processing unit capable of performing both serial binary and parallel binary-coded-decimal direct and indirect memory register arithmetic, and an input-output control unit capable of bidirectionally transferring information between the central processing unit and a number of input and output units are controlled by a microprocessor included in the central processing unit. The input and output units include a keyboard input unit, a magnetic card reading and recording unit capable of bidirectionally transferring information between an external magnetic card and the read-write memory unit, and a solid state output display unit capable of displaying three lines of numeric information. The memory, central processing, input-output control, input, and output units are employed to provide an adaptable programmable calculator that may be operated manually by the user from the keyboard input unit or automatically by a program stored in the read-write memory unit. The calculator may also be employed to load programs into the read-write memory unit from the keyboard input unit, to separately transfer either data or programs bidirectionally between the read-write memory unit and an external magnetic card, and to code programs stored in the read-write memory unit as being secure when they are transferred to an external magnetic card, thereby preventing users of the calculator from re-transferring them to an external magnetic card or obtaining any indication of the individual program steps once they are reloaded into the calculator.

CROSS REFERENCE TO RELATED APPLICATIONS

This is a continuation of now abandoned application Ser. No. 085,342,filed Oct. 16, 1979, which is in turn a continuation of now abandonedapplication Ser. No. 850,329, filed Nov. 10, 1977, which is in turn adivisional of application Ser. No. 535,750, filed Dec. 23, 1974, nowissued as U.S. Pat. No. 4,063,221, which is in turn a divisional ofapplication Ser. No. 153,437, filed June 15, 1971, now issued as U.S.Pat. No. 3,859,635. The subject matter of U.S. Pat. No. 3,859,635 isincorporated herein by reference.

BACKGROUND OF THE INVENTION

This invention relates generally to calculators and improvements thereinand more particularly to programmable calculators that may be controlledboth manually from the keyboard input unit and automatically by a storedprogram loaded into the calculator from the keyboard input unit or anexternal record member.

Conventional programmable calculators generally have less capability andflexibility than is required to meet the needs of many users. Forexample, they typically cannot be readily expanded and adapted by theuser to separately increase the amount of program and data storagememory or to perform special keyboard functions oriented toward theenvironment of the user. They also typically cannot perform indirectlyaddressed numeric data register transfers and arithmetic withoututilizing available working registers for addresses rather than data.This seriously limits their ability to efficiently perform complexoperations such as file manipulations or matrix arithmetic. Moreover,they typically have a very limited capability for performing directarithmetic between working and storage memory registers and little or nocapability for performing indirect arithmetic between working andstorage memory registers.

In some conventional programmable calculators a program stored withinthe calculator can be recorded onto an external magnetic record memberand can later be reloaded back into the calculator from the magneticrecord member. However, data and programs stored within thesecalculators typically cannot be separately recorded onto an externalmagnetic record member and later separately reloaded back into thecalculator therefrom. Moreover, these calculators have no provision formaking a program secure when it is recorded onto an external magneticrecord member. Any user may therefore re-record the program or obtain anindication of the individual program steps once the program is reloadedinto the calculator.

Conventional programmable calculators with self-contained output printerunits typically have a very limited alpha capability of only a fewselected characters confined to certain columns of the printer. They aretherefore typically unable to print out both a numeric and a distinctmnemonic representation of every program step of every program storedwithin the calculator. Furthermore, they are typically unable to printout labels for inputs to and outputs from the calculator or messagesinforming the user how to run programs with which he may be unfamiliar.Such features would be very helpful to the user both in editing programsand in simplifying their use.

In some conventional programmable calculators a program stored withinthe calculator may be edited by single stepping forward through theprogram while viewing an output display representing thelast-encountered program step and its associated address and, in onecase, also the presently-encountered program step and its associatedaddress. However, these calculators typically cannot single stepbackward through the program or display the next program step to beencountered and its associated address. Moreover, they typically have noprovision for inserting program steps into the program without reloadingportions of the program and no provision for finding every occurrence ofany designated program step. Such features would also be very helpful tothe user in editing programs.

Conventional computer systems have or may be programmed to have muchmore capability than conventional programmable calculators. However,they are larger, more expensive, and less efficient in calculatingelementary mathematical functions than conventional programmablecalculators. Moreover, a skilled programmer is typically required toutilize them. Due to these factors, conventional computer systems arebest suited for handling large amounts of data or making highlyiterative or very complex mathematical calculations.

SUMMARY OF THE INVENTION

The principal object of this invention is to provide an improvedprogrammable calculator that has more capability and flexibility thanconventional programmable calculators and that is smaller, lessexpensive, more efficient in calculating elementary mathematicalfunctions, and easier to utilize than conventional computer systems.

Another object of this invention is to provide a programmable calculatorin which either programs or data stored within the calculator may beseparately recorded on an external magnetic record member and,subsequently, separately reloaded back into the calculator therefrom.

Another object of this invention is to provide a programmable calculatorin which the user may designate any program stored within the calculatoras being secure when it is recorded onto an external magnetic recordmember for subsequent re-entry into the calculator and in which the useris prevented from re-recording any secure program or obtaining anyindication of its individual program steps once it is reloaded into thecalculator.

Other and incidental objects of this invention will become apparent froma reading of this specification and an inspection of the accompanyingdrawings.

These objects are accomplished according to the illustrated preferredembodiment of this invention by employing a keyboard input unit, amagnetic card reading and recording unit, a solid state output displayunit, an output printer unit, an input-output control unit, a memoryunit and a central processing unit to provide an adaptable programmablecalculator having manual operating, automatic operating, programentering, magnetic card reading, magnetic card recording, and alphamericprinting modes. The keyboard input unit includes a group of data keysfor entering numeric data into the calculator, a group of control keysfor controlling the various modes and operations of the calculator andthe format of the output display, and a group of definable keys forcontrolling additional functions that may be added by the user. All ofthe data keys and nearly all of the control keys may also be employedfor programming the calculator, many of the control keys being providedsolely for this purpose. The keyboard input unit also includes a groupof indicator lights for informing the user of the status of thecalculator. These indicator lights and all of the keys are mounted on afront panel of a housing for the calculator.

The magnetic card reading and recording unit includes a reading andrecording head, a drive mechanism for driving a magnetic card from aninput receptacle in the front panel of the calculator housing past thereading and recording head to an output receptacle in the front panel,and reading and recording drive circuits coupled to the reading andrecording head for bidirectionally transferring information between themagnetic card and the calculator as determined by the control keys ofthe keyboard input unit. It also includes a pair of detectors and anassociated control circuit for disabling the recording drive circuitwhenever a notch is detected in the leading edge of the magnetic card toprevent information recorded on the magnetic card from beinginadvertently destroyed. Such a notch may be provided in any magneticcard the user desires to protect by simply pushing out a perforatedportion thereof.

The solid state output display unit includes three rows of lightemitting diode arrays and associated drive circuits for selectivelydisplaying three separate lines of numeric information. Numeric data maybe displayed in either a fixed or a floating point format as determinedby the control keys of the keyboard input unit.

The output printer unit includes a stationary thermal printing head witha row of resistive heating elements, a drive circuit for selectivelyenergizing each heating element, and a stepping mechanism for driving astrip of thermal-sensitive recording paper past the stationary thermalprinting head in seven steps for each line of alphameric information tobe printed out. Every alphabetic and numeric character and many othersymbols may be printed out individually or in messages as determined bythe control keys of the keyboard input unit or by a program storedwithin the calculator.

The input-output control unit includes a sixteen-bit universal shiftregister serving as an input-output register into which information maybe transferred serially from the central processing unit or in parallelfrom the keyboard input and magnetic card reading and recording unitsand from which information may be transferred serially to the centralprocessing unit or in parallel to the keyboard indicator lights and tothe solid state output display, magnetic card reading and recording, andoutput printer units. It also includes control logic responsive to thecentral processing unit for controlling the transfer of informationbetween these units. The input-output control unit may also be employedto perform the same functions between the central processing unit andperipheral units including, for example, a digitizer, a marked cardreader, an X-Y plotter, a magnetic tape unit, and a typewriter. Aplurality of peripheral units may be connected at the same time to theinput-output control unit by simply plugging interface modulesassociated with the selected peripheral units into receptacles providedtherefore in a rear panel of the calculator housing.

The memory unit may employ both direct and indirect decimal and symbolicaddressing. It includes a modular random-access read-write memory havinga program storage section for storing a plurality of program steps andhaving a separate data storage section including a plurality of workingregisters, a plurality of associated display registers, and a pluralityof storage registers for manipulating and storing data. These programand data storage sections of the read-write memory may be separatelyexpanded without increasing the overall dimensions of the calculator bythe addition of program storage modules or by the alteration of the datastorage memory control. Additional read-write memory made available tothe user is automatically accommodated by the calculator, and the useris automatically informed when the program or data storage capacity ofthe read-write memory has been exceeded.

The memory unit also includes a modular read-only memory in whichroutines and subroutines of basic instructions for performing thevarious functions of the calculator are stored. These routines andsubroutines of the read-only memory may be expanded and adapted by theuser to perform additional functions oriented toward the specific needsof the user. This is accomplished by simply plugging additionalread-only memory modules into receptacles provided therefor in the toppanel of the calculator housing. Added read-only memory modules areautomatically accommodated by the calculator and may be associated withthe definable keys of the keyboard input unit or employed to expand theoperations associated with other keys. An overlay is employed with eachadded read-only memory module associated with the definable keys of thekeyboard input unit to identify the additional functions that may thenbe performed by the calculator.

Plug-in read-only memory modules including, for example, an alphamodule, a mathematics module, a statistics module, a definable functionsmodule, and a typewriter module may be added to the read-only memory.The alpha module enables the calculator to print out every alphabeticcharacter individually or in messages. It employs addressing enabling itto redefine most of the keys of the keyboard input unit so that it maybe employed at the same time as other plug-in read-only memory modules.The mathematics module enables the calculator to perform trigonometricfunctions, coordinate transformations, vector arithmetic, and many othermathematical functions. Similarly, the statistics module enables thecalculator to perform random number generations, accumulations of sums,sums of products and sums of squares for up to five variables, linearand multiple linear regressions, and many other statistical functions.It also permits the use of a correct key, included among the definablekeys of the keyboard input unit, to automatically delete data from astatistical analysis. The definable functions module enables the user tostore programs of his own choosing in the program storage section of theread-write memory, associate them with some of the definable keys of thekeyboard input unit, and protect them from subsequently beinginadvertently altered or destroyed. It also permits the use of an insertkey and a find key, included among the definable keys of the keyboardinput unit, to insert program steps in a program stored in theread-write memory and to find every occurrence of any designated programstep in the stored program. The typewriter module enables the calculatorto control the entire keyboard of a properly interfaced typewriter.

The memory unit further includes a pair of recirculating sixteen-bitserial shift registers. One of these registers serves as a memoryaddress register for serially receiving information from anarithmetic-logic unit included in the central processing unit, forparallel addressing any memory location designated by the receivedinformation, and for serially transferring the received information backto the arithmetic-logic unit. The other of these registers serves as amemory access register for serially receiving information from thearithmetic-logic unit, for writing information in parallel into anyaddressed memory location, for reading information in parallel from anyaddressed memory location, and for serially transferring information tothe arithmetic-logic unit. It also serves as a four-bit parallel shiftregister for transferring four bits of binary-coded-decimal informationin parallel to the arithmetic-logic unit.

The central processing unit includes four recirculating sixteen-bitserial shift registers, a four-bit serial shift register, the arithmeticlogic unit, a programmable clock, and a microprocessor. Two of thesesixteen-bit serial shift registers serve as accumulator registers forserially receiving information from and serially transferringinformation to the arithmetic-logic unit. The accumulator registeremployed is designated by a control flip-flop. One of the accumulatorregisters also serves as a four-bit parallel shift register forreceiving four bits of binary-coded-decimal information in parallel fromand transferring four bits of such information in parallel to thearithmetic-logic unit. The two remaining sixteen-bit serial shiftregisters serve as a program counter register and a qualifier register,respectively. They are also employed for serially receiving informationfrom and serially transferring information to the arithmetic-logic unit.The four-bit serial shift register serves as an extend register forserially receiving information from either the memory access register orthe arithmetic-logic unit and for serially transferring information tothe arithmetic-logic unit.

The arithmetic-logic unit is employed for performing one-bit serialbinary arithmetic, four-bit parallel binary-coded-decimal arithmetic,and logic operations. It may also be controlled by the microprocessor toperform bidirectional direct and indirect arithmetic between any of aplurality of the working registers and any of the storage registers ofthe data storage section of the read-write memory.

The programmable clock is employed to supply a variable number of shiftclock pulses to the arithmetic-logic unit and to the serial shiftregisters of the input-output, memory, and central processing units. Itis also employed to supply clock control signals to the input-outputcontrol logic and to the microprocessor.

The microprocessor includes a read-only memory in which a plurality ofmicroinstructions and codes are stored. These microinstructions andcodes are employed to perform the basic instructions of the calculator.They include a plurality of coded and non-coded microinstructions fortransferring control to the input-output control logic, for controllingthe addressing and accessing of the memory unit, and for controlling theoperation of the two accumulator registers, the program counterregister, the extend register and the arithmetic-logic unit. They alsoinclude a plurality of clock codes for controlling the operation of theprogrammable clock, a plurality of qualifier selection codes forselecting qualifiers and serving as primary address codes for addressingthe read-only memory of the microprocessor, and a plurality of secondaryaddress codes for addressing the read-only memory of the microprocessor.In response to a control signal from a power supply provided for thecalculator, control signals for the programmable clock, andqualifier-control signals from the central-processing and input-outputcontrol units, the microprocessor issues the microinstructions and codesstored in the read-only memory of the microprocessor as required toprocess either binary or binary-coded-decimal information entered intoor stored in the calculator.

In the manual operating mode, the calculator is controlled by keycodessequentially entered into the calculator from the keyboard input unit bythe user. The solid state output display unit displays a numericrepresentation of the contents of three of the working registers andtheir associated display registers. These working registers and theirassociated display registers may contain the last-entered numericoperand and two previously entered or calculated numeric operands orresults or three previously entered or calculated numeric operands orresults. The output printer unit may be controlled by the user toselectively print out a numeric representation of any numeric dataentered into the calculator from the keyboard input unit, a numericrepresentation of any result calculated by the calculator, and a markdistinguishing numeric data entries from calculated numeric results. Ifthe alpha read-only memory module is plugged into the calculator, theoutput printer unit may also be controlled by the user to print outlabels for inputs to and outputs from the calculator and any otheralphabetic information that may be desired.

When the calculator is in the manual operating mode, it may also beoperated in a key-log alphameric printing mode. The output printer unitthen prints out a numeric representation of each keycode as it isentered by the user. If the alpha read-only memory module is pluggedinto the calculator, the output printer unit also prints out a mnemonicrepresentation of each such keycode.

In the automatic operating mode, the calculator is controlled byautomatically obtaining keycodes stored as steps of a program in theprogram storage section of the read-write memory. During automaticoperation of the calculator, data may be obtained from the memory unitas designated by the program or may be entered from the keyboard inputunit by the user while the operation of the calculator is stopped fordata either by the program or by the user. The solid state outputdisplay unit displays the final contents of the three working registersand their associated display registers. This may include the finalcalculated numeric result and two previously entered or calculatednumeric operands or results or three previously entered or calculatednumeric operands or results. The output printer unit prints outcalculated numeric results and other numeric information designated bythe program. If the alpha read-only memory module is plugged into thecalculator, the output printer unit also prints out any alphabeticinformation designated by the program.

When the calculator is in the automatic operating mode, the user mayalso employ a step program control key of the keyboard input unit tosingle step forward through the program being executed. This enables theuser to check the execution of the program step by step in order todetermine whether the program, as entered into the calculator, does infact carry out the desired sequence of operations.

In the program entering mode, keycodes are sequentially entered by theuser into the calculator from the keyboard input unit and are stored assteps of a program in the program storage section of the read-writememory. The program may include sequences of program steps that will beintrepreted, when the program is executed, as alphabetic information tobe printed out by the output printer unit if the alpha read-only memorymodule is plugged into the calculator. This alphabetic information mayinclude labels for inputs to and outputs from the calculator, alphabeticmessages for facilitating the use of the program and the operation ofthe calculator, or any other alphabetic information that may be desired.While the user is entering a program into the calculator in the programentering mode, the solid state output display unit displays a numericrepresentation of the last-entered program step and its associatedaddress and the addresses of the next two program steps to be enteredand the present contents of those addresses.

In the program entering mode, the user may also employ the step programcontrol key and a back step control key of the keyboard input unit, tosingle step either forward or backward through any sequence of programsteps stored in the program storage section of the read-write memory.While the user is single stepping forward or backward through a sequenceof program steps, the solid state output display unit displays a numericrepresentation of the last-encountered program step, the program steppresently encountered, the next program step to be encountered, and theaddresses of these program steps. If the definable functions read-onlymemory module is plugged into the calculator, the user may also employthe insert and find keys described above by switching to the manualoperating mode. These features greatly facilitate the editing ofprograms stored in the program storage section of the read-write memory.

When the calculator is in the program entering mode, it may also beoperated in a key-log alphameric printing mode. The output printer unitthen prints out a numeric representation of each program step and itsassociated address as it is entered into the calculator from thekeyboard input unit by the user. If the alpha read-only memory module isplugged into the calculator, the output printer unit also prints out amnemonic representation of each such program step.

When the calculator is in the program entering mode, it may also beoperated in a list alphameric printing mode. The output printer unitthen prints out a numeric representation of every program step thenstored in the program storage section of the read-write memory and anumeric representation of the addresses of those program steps. If thealpha read-only memory module is plugged into the calculator, the outputprinter unit also prints out a mnemonic representation of each suchprogram step.

In the magnetic card reading mode, the magnetic card reading andrecording unit may be employed by the user to separately load eitherdata or programs into the calculator from one or more external magneticcards. Data and programs so loaded are separately stored in the datastorage and program storage sections of the read-write memory.

In the magnetic card recording mode, the magnetic card reading andrecording unit may be employed by the user to separately record eitherdata or programs, separately stored in the data storage and programstorage sections of the read-write memory, onto one or more externalmagnetic cards. Programs stored in the program storage section of theread-write memory may be coded by the user as being secure when they arerecorded onto one or more external magnetic cards. The calculatordetects such programs when they are reloaded into the calculator andprevents the user from re-recording them or obtaining any listing orother indication of the individual program steps.

DESCRIPTION OF THE DRAWINGS

The following figures have been numbered in correspondence with the samefigures of U.S. Pat. No. 3,859,635, cited above as being incorporatedherein by reference.

FIG. 1 is a front perspective view of an adaptable programmablecalculator according to the preferred embodiment of this invention.

FIGS. 3A-B are simplified block diagrams of the adaptable programmablecalculator of FIG. 1.

DESCRIPTION OF THE PREFERRED EMBODIMENT GENERAL DESCRIPTION

Referring to FIG. 1, there is shown an adaptable programmable calculator10 including both a keyboard input unit 12 for entering information intoand controlling the operation of the calculator and a magnetic cardreading and recording unit 14 for recording information stored withinthe calculator onto one or more external magnetic cards 16 and forsubsequently loading the information recorded on these and other similarmagnetic cards back into the calculator. The calculator also includes asolid state output display unit 18 for displaying three lines of numericinformation stored within the calculator and a group of indicator lights19, serving as part of the keyboard input unit, for indicating thestatus of the calculator. It may also include an output printer unit 20for printing out alphameric information on a strip of thermal-sensitiverecording paper 22. All of these input and output units are mountedwithin a single calculator housing 24 adjacent to a curved front panel26 thereof.

Referring to the simplified block diagram shown in FIGS. 3A-B, it may beseen that the calculator also includes an input-output control unit 44(hereinafter referred to as the I/O control unit) for controlling thetransfer of information to and from the input and output units, a memoryunit 46 for storing and manipulating information entered into thecalculator and for storing routines and subroutines of basicinstructions performed by the calculator, and a central processing unit48 (hereinafter referred to as the CPU) for controlling the execution ofthe routines and subroutines of basic instructions stored in the memoryunit as required to process information entered into or stored withinthe calculator. The calculator also includes a bus system comprising anS-bus 50, a T-bus 52, and an R-bus 54 for transferring information fromthe memory and I/O control units to the CPU, from the CPU to the memoryand I/O control units, and between different portions of the CPU. Itfurther comprises a power supply for supplying DC power to thecalculator and peripheral units employed therewith and for issuing acontrol signal POP when power is supplied to the calculator.

The I/O control unit 44 includes an input-output register 56(hereinafter referred to as the I/O register), associated I/O gatingcontrol circuitry 58, and input-output control logic 60 (hereinafterreferred to as the I/O control). I/O register 56 comprises a universalsixteen-bit shift register into which information may be transferredeither bit-serially from CPU 48 via T-bus 52 or in parallel fromkeyboard input unit 12, magnetic card reading and recording unit 14, andperipheral input units 28 such as the marked card reader via twelveinput party lines 62. Information may also be transferred from I/Oregister 56 either bit-serially to CPU 48 via S-bus 50 or in parallel tomagnetic card reading and recording unit 14, solid state output displayunit 18, indicator lights 19, output printer unit 20, and peripheraloutput units 28 such as the X-Y plotter or the typewriter via sixteenoutput party lines 64.

I/O gating control circuitry 58 includes control circuits forcontrolling the transfer of information into and out of I/O register 56in response to selected I/O qualifier control signals from CPU 48 andselected I/O control instructions from I/O control 60. It also includesan interrupt control circuit 65, a peripheral control circuit 66, amagnetic card control circuit 67, a printer control circuit 68, adisplay control circuit 69, and an indicator control circuit 70 forvariously controlling the input and output units and issuing controlsignals QFG and EBT to I/O control 60 via two output lines 71 and 72.These last mentioned control circuits variously perform their controlfunctions in response to control signal POP from the power supply, I/Oqualifier control signals from CPU 48, I/O control instructions from I/Ocontrol 60, and control signals from keyboard input unit 12. Interruptcontrol circuit 65 initiates the transfer of information into I/Oregister 56 from keyboard input unit 12 or interrupting peripheral inputunits 28 such as the marked card reader and issues a qualifier controlsignal QNR to CPU 48 via output lines 73. Peripheral control circuit 66enables interface modules 30 plugged into the calculator to respond toinformation from I/O register 56, control associated peripheral units28, transfer information to and/or receive information from associatedperipheral units 28, and in some cases initiate the transfer ofinformation to I/O register 56 from the interface modules themselves.Magnetic card control circuit 67 enables magnetic card reading andrecording unit 14 to respond to information in I/O register 56 andeither read information into I/O register 56 from a magnetic card 16 orrecord information onto a magnetic card 16 from I/O register 56. Printercontrol circuit 68, display control circuit 69, and indicator controlcircuit 70 enable output display unit 18, output printer unit 20, andindicator lights 19, respectively, to respond to information from I/Oregister 56.

When a basic I/O instruction obtained from memory unit 46 is to beexecuted, CPU 48 transfers control to I/O control 60 by issuing a pairof I/O microinstructions PTR and XTR thereto. In response to these I/Omicroinstructions from CPU 48, control signal POP from the power supply,control signals QFG and EBT from I/O gating control circuitry 58, andI/O qualifier and clock control signals from CPU 48, I/O control 60selectively issues one or more I/O control instructions to gatingcontrol circuitry 58 as required to execute the basic I/O instructiondesignated by CPU 48 and issues control signals TTX, XTR, QRD, and SCBto CPU 48 via output lines 74-77. The I/O qualifier control signalsissued to I/O control 60 and gating control circuitry 58 by CPU 48 arederived from the basic I/O instruction to be executed. Those qualifiercontrol signals issued to I/O control 60 designate the specific I/Ocontrol instructions to be issued by I/O control 60, while those issuedto gating control circuitry 58 designate selected control circuits to beemployed in executing the basic I/O instruction.

Memory unit 46 includes a modular random-access read-write memory 78(hereinafter referred to as the RWM), a modular read-only memory 80(hereinafter referred to as the ROM), a memory address register 82(hereinafter referred to as the M-register), a memory access register 84(hereinafter referred to as the T-register), and control circuitry 85for these memories and registers. RWM 78 and ROM 80 comprise MOS-typesemiconductor memories. The basic RWM 78 contains a data storage section86 of 512 sixteen-bit words extending from address 1000 to address 1777on page 0 and a separate program storage section 88 of 512 six-bit wordsextending from address 12000 to address 12777 on page 5. All addresseson the memory map are represented in octal form.

Data storage section 86 contains 49 four-word storage registersavailable to the user (as user addresses 000-048) for manipulating andstoring data, 60 additional four-word storage registers that may be madeavailable to the user (as user addresses 049-108) for the same purpose,and 76 words dedicated for use by CPU 48. The 60 additional four-wordstorage registers may be made available to the user by altering acontrol routine in the ROM section 80. This is accomplished by removinga top panel 90 of the calculator housing shown in FIG. 1, removing aprinted circuit board containing the control routine to be altered, andsubstituting another printed circuit board containing the alteredcontrol routine. Additional data storage modules made available to theuser are automatically accommodated by the calculator. Routines andsubroutines of basic instructions for performing the basic functions ofthe calculator and constants employed by these routines and subroutinesare stored in these portions of ROM 80. An additional 3,072 sixteen-bitwords of ROM may also be added on pages 1, 3, and 4 in steps of 512 and1,024 words. This is accomplished by simply inserting plug-in ROMmodules 92 into receptacles 94 provided therefor in top panel 90 of thecalculator housing as illustrated in FIG. 1 by the partially-insertedplug-in ROM module on the left. As each plug-in ROM module 92 isinserted into one of these receptacles a spring-loaded door 95 at theentrance of the receptacle swings down allowing passage of the plug-inROM module. Once the plug-in ROM module is fully inserted as illustratedby the plug-in ROM module on the right, a printed circuit terminal board96 contained within the plug-in ROM module plugs into a mating edgeconnector mounted inside the calculator. A handle 98 pivotally mountedat the top end of each plug-in ROM module 92 facilitates removal of theplug-in ROM module once it has been fully inserted into one of thereceptacles 94.

Routines and subroutines of basic instructions (and any neededconstants) for enabling the calculator to perform many additionalfunctions are stored in each plug-in ROM module 92. The user himself maytherefore quickly and simply adapt the calculator to perform manyadditional functions oriented toward his specific needs by simplyplugging ROM modules of his own choosing into the calculator. Addedplug-in ROM modules are automatically accommodated by the calculator andassociated with definable section 91 of keyboard input unit 12 oremployed to expand the functions performed by this and other sections ofthe keyboard input unit.

Referring again to FIGS. 3A-B, M-register 82 of the memory unitcomprises a recirculating sixteen-bit serial shift register into whichinformation may be transferred bit-serially from CPU 48 via T-bus 52 andout of which information may be transferred bit-serially to CPU 48 viaS-bus 50. Information shifted into M-register 82 may be employed toaddress any word in RWM 78 or ROM 80 via fifteen output lines 106.

T-register 84 of the memory unit comprises a recirculating sixteen-bitserial shift register into which information may be transferred eitherbit-serially from CPU 48 via T-bus 52 or in parallel from any addressedword in RWM 78 and ROM 80 via sixteen parallel input lines 108.Information may be transferred from T-register 104 either bit-seriallyto CPU 48 via S-bus 50 or in parallel to any addressed word in RWM 78via sixteen parallel output lines 110. The four least significant bitsof information contained in T-register 104 may comprisebinary-coded-decimal information and may be transferred from theT-register in parallel to CPU 48 via three parallel output lines 112taken with S-bus 50.

The control circuitry 85 of the memory unit controls these transfers ofinformation into and out of M-register 82 and T-register 84, controlsthe addressing and accessing of RWM 78 and ROM 80, and refreshes RWM 78.It performs these functions in response to memory microinstructions,memory clock pulses, and shift clock pulses from CPU 48.

CPU 48 includes a register unit 114, an arithmetic-logic unit 116(hereinafter referred to as the ALU), a programmable clock 118, and amicroprocessor 120. Register unit 114 comprises four recirculatingsixteen-bit shift registers 122, 124, 126, and 128 and one four-bitshift register 130. Shift registers 122 and 124 serve as sixteen-bitserial accumulator registers (hereinafter referred to as the A-registerand the B-register, respectively) into which information may betransferred bit-serially from ALU 116 via T-bus 52 and out of whichinformation may be transferred bit-serially to ALU 116 via R-bus 54. Thefour least significant bit positions of A-register 122 also serve as afour-bit parallel accumulator register into which four bits ofbinary-coded-decimal information may be transferred in parallel from ALU116 via four parallel input lines 132 and out of which four bits ofbinary-coded-decimal information may also be transferred in parallel toALU 116 via three parallel output lines 134 taken with R-bus 54.

Shift register 126 serves as a sixteen-bit system program counter(hereinafter referred to as the P-register) into which information maybe transferred bit-serially from ALU 116 via T-bus 52 and out of whichinformation may be transferred bit-serially to ALU 116 via R-bus 54.Information contained in the least significant bit position ofP-register 126 may also be transferred as a qualifier control signal QPOto microprocessor 120 via output line 135.

Shift register 128 serves as a sixteen-bit qualifier register(hereinafter referred to as the Q-register) into which information maybe transferred bit-serially from ALU 116 via T-bus 52 and out of whichinformation may be transferred bit-serially to ALU 116 via R-bus 54.Information contained in the five least-significant bit positions ofQ-register 128 is transferred to I/O gating control circuitry 58 as fiveone-bit I/O qualifier control signals Q00-Q04 via five parallel outputlines 136, and information contained in the six next-least-significantbit positions of the Q-register is transferred to I/0 control 60 as sixone-bit I/O qualifier control signals Q05-Q10 via six parallel outputlines 138. Similarly, information contained in the sevenleast-significant, the ninth and eleventh least-significant, and themost-significant bit positions of Q-register 128 and information derivedfrom the thirteenth, fourteenth, and fifteenth bit positions of theQ-register may be transferred to microprocessor 120 as eleven one-bitmicroprocessor qualifier control signals Q00-Q06, Q08, Q10, Q15, and QMRvia eleven output lines 140. Information contained in the twelfththrough the fifteenth least-significant bit positions of Q-register 128may be transferred to microprocessor 120 as a four-bit primary addresscode via four parallel output lines 142.

Shift register 130 serves as a four-bit serial extend register(hereinafter referred to as the E-register) into which information maybe transferred bit-serially either from ALU 116 via T-bus 52 or from theleast-significant bit position of T-register 84 via input line 144.Information may also be transferred out of E-register 130 to ALU 116 viaR-bus 54.

Register unit 114 also includes control circuitry 146 for controllingthe transfer of parallel binary-coded-decimal information into and outof A-register 122 and the transfer of serial binary information into andout of A-register 122, B-register 124, P-register 126, Q-register 128,and E-register 130. This is accomplished in response to registermicroinstructions from microprocessor 120, control signals TTX and XTRfrom I/O control 60, and shift clock control pulses from programmableclock 118. Control circuitry 146 includes a flip-flop 148 (hereinafterreferred to as the A/B flip-flop) for enabling the transfer ofinformation into and out of either the A-register 122 or the B-register124 as determined by the state of the A/B flip-flop. The state of A/Bflip-flop 148 is initially determined by information Q11 transferred tothe A/B flip-flop from the twelfth least-significant bit position ofQ-register 128 but may be subsequently complemented one or more times bymicroinstruction CAB from microprocessor 120.

ALU 116 may perform either one-bit serial binary arithmetic on datareceived from T-register 84 or M-register 82 via S-bus 50 and/or fromany register of register unit 114 via R-bus 54 or four-bit parallelbinary-coded-decimal arithmetic on data received from T-register 84 viaoutput lines 112 taken with S-bus 50 and/or from A-register 122 viaoutput lines 134 taken with R-bus 54. It may also perform logicoperations on data received from memory unit 46 and/or register unit 114via any of these lines. The arithmetic and logic operations performedare designated by ALU microinstructions from microprocessor 120 and arecarried out in response to these microinstructions, shift clock controlpulses from programmable clock 118, and control signal SCB from I/Ocontrol 60. Information is also transferred from ALU 116 to A-register122 via output lines 132 or to I/O register 56, M-register 82,T-register 84, or any register of register unit 114 via T-bus 52 inresponse to microinstructions and control signals applied to theseregisters. If a carry results while ALU 116 is performing either one-bitserial binary arithmetic or four-bit parallel binary-coded-decimalarithmetic, the ALU issues a corresponding qualifier control signal QBCand QDC to microprocessor 120 via one of two output lines 152 and 154.

Programmable clock 118 includes a crystal-controlled system clock 156, aclock decoder and generator 158, and a control gate 160. System clock156 issues regularly recurring clock pulses to clock decoder andgenerator 158 via output line 162. In response to these regularlyrecurring clock pulses from system clock 156 and to four-bit clock codesfrom microprocessor 120, clock decoder and generator 158 issues trainsof n shift clock pulses to ALU 116, M-register 82, T-register 82, andall of the registers of register unit 114 via output line 164. Thesetrains of n shift clock pulses are employed for shifting a correspondingnumber of bits of serial information into or out of any of theseregisters or for shifting a carry bit in the ALU. The number n of pulsesin each of these trains may vary from one to sixteen as determined bythe number of bits of serial information required during each operationto be performed. In response to a control signal CCO from microprocessor120, control gate 160 prevents any shift clock pulses from being appliedto the ALU or any of these registers. Upon completion of each train of nshift clock pulses, clock decoder and generator 158 issues a ROM clockpulse to microprocessor 120 via output line 166 and an I/O clock pulseto I/O control 60 via output line 168. In response to the regularlyrecurring clock signal from system clock 56, clock decoder and generator158 also issues correspondingly regularly recurring memory clock pulsesto memory unit 46 via output line 170.

Microprocessor 120 selectively issues two I/O microinstructions to I/Ocontrol 60 via two output lines 172, six memory microinstructions tomemory unit 46 via six output lines 174, thirteen registermicroinstructions to register unit 114 via thirteen output lines 176,and five ALU microinstructions to ALU 116 via five output lines 178. Italso issues a four-bit clock code associated with each of thesemicroinstructions to clock decoder 158 via four output lines 180. Thesemicroinstructions and associated clock codes are issued as determined bythe control signal POP from the power supply, the eleven microprocessorqualifier control signals from Q-register 128, the four-bit primaryaddress codes from Q-register 128, and the five microprocessor qualifiercontrol signals from I/O control 60, interrupt control 65, ALU 116, andP-register 126.

KEY OPERATIONS

All operations performed by the calculator may be controlled orinitiated by the keyboard input unit and/or by keycodes entered into thecalculator from the keyboard input unit, the magnetic card reading andrecording unit, or peripheral input units such as the marked card readerand stored as program steps in the program storage section of the RWM.The calculator responds to keycodes in basically the same manner whetherobtaining them from the keyboard input unit or from the program storagesection of the RWM. An operational description of the keyboard inputunit is therefore now given with specific reference to FIG. 1, except asotherwise indicated.

Mode Keys (RUN, PRGM, KEY LOG)

When the calculator is first turned on, it is automatically initializedand placed in a manual operating mode. If the calculator is switched tosome other operating mode, it may subsequently be placed in the manualoperating mode again by simply depressing the RUN mode key. In themanual operating mode, operation of the calculator is manuallycontrolled by the user from the keyboard input unit. During this modethe output display unit displays a decimal numeric representation of thecontents of the x-, y-, and z-registers (or of associated memoryregisters in which the actual or intended contents of the x-, y-, andz-registers are temporarily stored and, for simplicity of description,are then considered to be the contents of the x-, y-, and z-registers).The contents of the x-, y-, and z-registers are displayed adjacent tothe corresponding register designators "keyboard x", "accumulator y",and "temporary z", respectively, in the display window. Depression ofthe RUN mode key also conditions the calculator for operation in anautomatic operating mode, a first key-log printing mode, a program-listprinting mode, a magnetic card reading mode, and a magnetic cardrecording mode as determined by other keys hereinafter explained. A runindicator light 19 positioned immediately below the RUN mode key isturned on when the calculator is operating in any of the RUN modes.

The PRGM mode key is depressed to place the calculator in a programentering mode. In this mode keycodes sequentially entered by the userfrom the keyboard input unit are stored as program steps in successiveprogram-step registers of the program storage section of the RWM asspecified by the user program counter. As described above, 500program-step registers (user addresses 0000-0499) are available, and1536 additional program-step registers (user addresses (0500-2035) maybe made available, to the user for this purpose. The program stepregister into which each program step is to be stored and from whicheach program step is to be obtained in any program-related operation isalways specified by the user program counter. Thus, before entering aprogram or subprogram into the calculator, the user program counter mustbe set to the address of the program step register into which it isdesired to store the initial program step of the program or subprogramto be entered (this address is hereinafter referred to as the desiredstarting address nnnn of the program). This may be accomplished, whenthe calculator is in a keyboard-controlled run mode, by depressing theGO TO key followed by the decimal-digit keys 0-9 specifying the desiredstarting address nnnn of the program. If the desired starting address is0000, this may also be accomplished, when the calculator is in themanual operating mode by simply depressing the END key.

Once the user program counter is set to the desired starting addressnnnn, the user may proceed to enter the program or subprogram bysequentially performing basically the same key operations that he wouldnormally perform in the manual operating mode. Thus no special languageneed be learned to program the calculator. During the program enteringmode the output display unit displays a decimal numeric representationof the last-entered program step and its associated address and theaddresses of the next two program steps to be entered and the presentcontents of those addresses.

Depression of the PRGM mode key also conditions the calculator foroperation in a second key-log printing mode and the program-listprinting mode as determined by other keys hereinafter explained. Aprogram mode indicator light 19 positioned immediately below the PRGMmode key is turned on when the calculator is operating in any of thePRGM modes.

The KEY LOG mode key is depressed, when the calculator is in the manualoperating mode, to place the calculator in the first key-log printingmode. In this mode, the output printer unit prints out an octal numericrepresentation of each keyboard operation as it is performed by theuser. This provides a permanent record of all keyboard operations(including regular data print-out operations), as illustrated by thefollowing example:

    ______________________________________                                        Keyboard entry  Key log                                                       ______________________________________                                        1               01                                                            2               02                                                             ↑        27                                                            3               03                                                            4               04                                                            +               33                                                            5               05                                                            ÷           35                                                             ##STR1##        45                                                                           5.00000                                                       ______________________________________                                    

If the alpha ROM module enabling the calculator to print out everyalphabetic character and many symbols individually or in messages isplugged into the calculator, the output printer unit also prints out amnemonic representation of each keyboard operation as it is performed bythe user. This is illustrated by the following example:

    ______________________________________                                        Keyboard entry    Key log                                                     ______________________________________                                        1                 1      01                                                   2                 2      02                                                    ↑          UP     27                                                   3                 3      03                                                   4                 4      04                                                   +                 +      33                                                   5                 5      05                                                   ÷             DIV    35                                                    ##STR2##          PNT    45                                                                           5.00000                                              ______________________________________                                    

In the first key-log printing mode the output display unit displays thesame information as during the manual operating mode.

The KEY LOG mode key is depressed, when the calculator is in the programentering mode, to place the calculator in the second key-log printingmode. In this mode the output printer unit prints out an octal numericrepresentation of each keycode as it is entered into the calculator fromthe keyboard input unit and a decimal numeric representation of theaddress at which each such keycode is stored as a program step in theprogram storage section of the RWM. This provides a permanent record ofall keyboard-entered program steps, as illustrated by the followingexample:

    ______________________________________                                        Keyboard entry Key log                                                        ______________________________________                                        CLEAR          0000 - - - - 20                                                1              0001 - - - - 01                                                2              0002 - - - - 02                                                 ↑       0003 - - - - 27                                                3              0004 - - - - 03                                                4              0005 - - - - 04                                                +              0006 - - - - 33                                                5              0007 - - - - 05                                                x⃡y                                                                              0008 - - - - 30                                                 ##STR3##       0009 - - - - 45                                               STOP           0010 - - - - 41                                                END            0011 - - - - 46                                                ______________________________________                                    

If the alpha ROM module is plugged into the calculator, the outputprinter unit also prints out a mnemonic representation of eachkeyboard-entered program step. This is illustrated by the followingexample:

    ______________________________________                                        Keyboard entry   Key log                                                      ______________________________________                                        CLEAR            0000 - -                                                                              CLR                                                  20                                                                            1                0001 - -                                                                              1                                                    01                                                                            2                0002 - -                                                                              2                                                    02                                                                             ↑         0003 - -                                                                              UP                                                   27                                                                            3                0004 - -                                                                              3                                                    03                                                                            4                0005 - -                                                                              4                                                    04                                                                            +                0006 - -                                                                              +                                                    33                                                                            5                0007 - -                                                                              5                                                    05                                                                            x⃡y  0008 - -                                                                              XEY                                                  30                                                                            PRINT            0009 - -                                                                              PNT                                                  45                                                                            STOP             0010 - -                                                                              STP                                                  41                                                                            END              0011 - -                                                                              END                                                  46                                                                            ______________________________________                                    

In the second key-log printing mode the output display unit displays thesame information as during the program entering mode.

The KEY LOG mode key is a toggling on-off key (i.e. repeated depressionsof the key alternately switch the calculator in and out of either thefirst or the second key-log printing mode). A key-log indicator light 19positioned immediately below the KEY LOG mode key is turned on when thecalculator is operating in either key-log printing mode.

Program Keys (LIST, LOAD, RECORD)

The LIST program key is depressed, when the calculator is in the manualoperating mode, first key-log printing mode, second key-log printingmode, or program entering mode, to place the calculator in theprogram-list printing mode. In this mode, the output printer unit printsout an octal numeric representation of keycodes then stored as programsteps in the program storage section of the RWM and a decimal numericrepresentation of the addresses of these program steps. These programsteps and addresses are printed out in a list beginning with the addressinitially specified by the user program counter and ending with theaddress specified by the user program counter when an END program stepis encountered or the STOP key is depressed. The user may select thestarting address nnnn of the list by depressing the GO TO key followedby the decimal digit keys (0-9) designating the desired starting addressnnnn, or simply by depressing the END key if the starting address is0000. Similarly, the user may terminate the list at any time bydepressing the STOP key. When the program-list operation is terminatedeither by an END program step or by depression of the STOP key, thecalculator reverts to its original manual operating, first or secondkey-log printing, or program entering mode. If the program-listoperation is terminated by an END program step, the user program counterspecifies the address of the END program step. However, if theprogram-list operation is terminated by depression of the STOP key, theuser program counter specifies the address of the next program step tohave been encountered had the STOP key not been depressed.

The list printed out by the output printer unit serves as a permanentrecord of a sequence of program steps stored as a program, subprogram,or part thereof in the program storage section of the RWM and theaddress of these program steps. A typical list is illustrated by theright- and left-hand columns of numbers printed out on the strip ofthermal-sensitive recording paper 22. If the alpha ROM module is pluggedinto the calculator, the output printer unit also prints out a mnemonicrepresentation of each of these program steps. This is illustrated bythe central column of alphameric characters printed out on the samestrip of thermal-sensitive recording paper.

The LOAD program key is depressed, when the calculator is in the manualoperating mode or the first key-log printing mode, to place thecalculator in the magnetic card reading mode. During this mode, programsteps recorded on one or more external magnetic cards 16 are read by themagnetic card reading and recording unit and stored in the programstorage section of the RWM. In order to properly accomplish this programloading operation:

1. The user program counter is set to the desired starting address nnnnof the program storage section to be loaded. This may be accomplished bydepressing the GO TO key followed by those decimal degit keysdesignating the desired starting address nnnn, or simply by depressingthe END key if the desired starting address is 0000.

2. A recorded magnetic card 16 inserted into an input receptacle 186 ofthe magnetic card reading and recording unit with the first side 187 tobe read placed in the operative reading and recording position as shownin FIG. 1.

3. The LOAD key is depressed, thereby causing the magnetic card readingand recording unit to begin reading the first recorded side of themagnetic card and turning on an INSERT CARD indicator light 19positioned immediately below and between the LOAD and RECORD programkeys. This program reading operation will terminate and the INSERT CARDindicator light will turn off when an END (i.e. terminating) programstep is read. The calculator will thereupon revert to the originalmanual operating or first key-log printing mode with the user programcounter specifying the address of the END program step. In any case, themagnetic card will be partially ejected at an output receptacle 188 ofthe magnetic card reading and recording unit after each reading pass hasbeen completed.

4. If the INSERT CARD indicator light remains on and the magnetic cardreading and recording unit continues to run, the partially ejectedmagnetic card is retrieved from output receptacle 188, turned around,and the same magnetic card (or another magnetic card, as appropriate)inserted into input receptacle 186 with the next side 189 to be readplaced in the operative reading and recording position. The magneticcard reading and recording unit thereupon begins reading this nextrecorded side. This program reading operation is repeated, if necessary,until it is terminated by reading an END program step. If desired,program reading operation may also be terminated by depressing the STOPkey. The calculator will thereupon also revert to the original manualoperating or first key-log printing mode, but with the user programcounter specifying the address of the next program step to have beenread and loaded into the program storage section of the RWM had theprogram reading operation not been so terminated.

When the program reading operation is terminated by an END program step,the user program counter is left specifying the address of this ENDprogram step so that additional program steps, subprograms, and programsmay be chain-loaded into the calculator without extra effort by simplyrepeating steps 2, 3, and 4 above. The first additional program stepwill over-write the last encountered END program step thereby leavingonly a final END program step at the completion of the compositeprogram. Similarly, when the program reading operation is terminated bydepressing the STOP key, the user program counter is also leftspecifying the address of the next program step to have been read sothat additional program steps, subprograms, and programs may also bechain-loaded by simply repeating steps 2, 3, and 4 above.

The RECORD program key is depressed, when the calculator is in themanual operating mode or the first key-log printing mode, to place thecalculator in the magnetic card recording mode. During this mode programsteps stored in the program storage section of the RWM are recorded onone or mre external magnetic cards by the magnetic card reading andrecording unit. In order to properly accomplish this program recordingoperation:

1. The user program counter is set to the starting address nnnn of thestored program to be recorded. This may be accomplished by depressingthe GO TO key followed by the decimal digit keys designating therequired address nnnn, or simply by depressing the END key if thestarting address is 0000.

2. A magnetic card 16 is inserted into input receptacle 186 of themagnetic card reading and recording unit with the first side 187 of thecard to be recorded placed in the operative reading and recordingposition as shown.

3. The RECORD program key is depressed, thereby causing the magneticcard reading and recording unit to begin recording the stored programonto the first side of the magnetic card and turning on the INSERT CARDindicator light 19. This program recording operation will terminate andthe INSERT CARD indicator light turn off when an END program step isrecorded. The calculator will thereupon revert to the original manualoperating or first key-log printing mode with the user program counterspecifying the address of the END program step. In any case, themagnetic card will be partially ejected at output receptacle 188 of themagnetic card reading and recording unit after each recording pass hasbeen completed.

4. If the INSERT CARD indicator light remains on, and the magnetic cardreading and recording unit continues to run, the partially ejected cardis retrieved from output receptacle 188, turned around, and the samemagnetic card (or another magnetic card, as appropriate) inserted intoinput receptacle 186 with the next side 189 to be recorded placed in theoperative reading and recording position. The magnetic card reading andrecording unit thereupon begins recording on this next side. Thisprogram recording operation is repeated, if necessary, until it isterminated by recording an END program step. If no END program step isencountered, the calculator will continue to request more magnetic cardrecording passes until 2,036 program steps are recorded, regardless ofthe actual amount of program storage memory installed in the calculator.If desired, the recording operation can be terminated at any time bydepressing the STOP key. The calculator will thereupon also revert tothe original manual operating or first key-log printing mode but withthe user program counter left specifying the address of the next programstep to have been recorded had the recording operation not been soterminated.

Once the program is recorded on one or both sides of one or moremagnetic cards 16, it may be protected against undesired erasures bypunching out a perforated portion 190 at the leading edge of each sideon which it is recorded. If a protected (notched) magnetic card isinserted into input receptacle 186 of the magnetic card reading andrecording unit and the RECORD key depressed, the STATUS (error)indicator light 19 will turn on and will remain on while the magneticcard reading and recording unit drives the magnetic card to outputreceptacle 188, whereupon the STATUS light will be extinguished. Nothingwill be recorded on the protected magnetic card during this recordingpass nor will there be any impairment of the calculator itself or theinformation previously recorded on the protected magnetic card. Thecalculator and the magnetic card unit will simply continue to wait for anonprotected magnetic card to be inserted into input receptacle 186 forthe magnetic card reading and recording unit.

Automatic Operating Mode Control Keys (CONTINUE, STOP, END, PAUSE)

The CONTINUE key is depressed, when the calculator is in the manualoperating mode or the first key-log printing mode, to start theautomatic execution of a program or subprogram stored within the programstorage section of the RWM. Automatic execution begins at the addressspecified by the user program counter. Thus, in order to execute adesired program or subprogram stored within the program storage sectionof the RWM:

1. The user program counter is set to the starting address nnnn of thedesired program or subprogram. This is accomplished by depressing the GOTO key followed by those decimal digit keys designating the startingaddress nnnn of the desired program. If the starting address is 0000,this may be accomplished by simply depressing the END key.

2. The CONTINUE key is depressed, when the calculator is in the manualoperating mode or the first key-log printing mode, to place thecalculator in the automatic operating mode and begin automatic executionof the stored program or subprogram at the address nnnn specified by theuser program counter. Automatic execution will continue until a STOP orEND program step is encountered or a STOP key is depressed as describedbelow.

The STOP key is depressed, when the calculator is in the automaticoperating mode, to halt the automatic execution of a stored program orsubprogram immediately after completion of the program step then beingexecuted. Automatic execution of a stored program or subprogram issimilarly halted when a STOP program step is encountered. In either casethe calculator will thereupon revert to the original manual operating orfirst key-log printing mode with the program counter specifying theaddress of the next program step to be encountered. The user may thenoperate the calculator in the manual operating mode to enter datarequired by the program being executed or to perform other calculations.So long as the user does not depress the GO TO or END key or performsome other operation altering the last setting of the user programcounter, he may resume automatic operation of the calculator at any timeby simply depressing the CONTINUE key again.

As described above, the STOP key may also be depressed, when thecalculator is in the program-list printing mode, the magnetic cardreading mode, or the magnetic card recording mode to halt theprogram-list printing operation, the magnetic card reading operation orthe magnetic card recording operations, respectively. In each of thesecases the calculator will revert to the mode it was in immediately priorto the halted operation with the user program counter specifying theaddress of the next program step to have been printed, read, or recordedhad the STOP key not been depressed.

The END key is depressed, when the calculator is in the manual operatingmode, to set the user program counter to address 0000 in the programstorage section of the RWM (this is equivalent to depressing the GO TO,0, 0, 0, and 0 keys). An END program step terminates the automaticexecution of a stored program by the calculator and resets the userprogram counter to the first available address 0000 in the programstorage section of the RWM. The calculator thereupon reverts to theoriginal manual operating or first key-log printing mode, from whichautomatic operation was initiated. Automatic execution may then beresumed by depressing the CONTINUE key, if the desired starting addressis 0000 or by repeating steps 1 and 2 described above in connection withthe CONTINUE key if the desired starting address is not 0000. An ENDprogram step also clears any subroutine return-address to which returnhas not by then been made. As described above, it also terminates theprogram listing, magnetic card reading, and magnetic card recordingoperations.

The PAUSE key is typically used only as a program step. Automaticexecution of a stored program or subprogram is automatically halted fora 1/4 second pause interval whenever a PAUSE program step is encounteredor the PAUSE key is depressed. This enables partial results of acalculation to be displayed by the output display unit during automaticexecution of the stored program or subprogram. Successive PAUSE programsteps may be employed to increase the duration of the pause interval by1/4 second increments. Automatic execution of the stored program orsubprogram automatically resumes after the pause interval.

A PAUSE program step may also be used as a conditional stop, permittingthe user to stop the automatic operation of the calculator immediatelyafter execution of any PAUSE program step. This is accomplished bysimply depressing any key (other than STOP) during automatic executionof the program until the PAUSE program step has been executed. In otherwords, a PAUSE program step immediately followed by depression of anykey other than STOP has the same effect as depressing STOP, with theadvantage that automatic execution of a stored program or subprogram maythereby be precisely halted at one or more predetermined program stepsif the user so desires. Automatic execution of the stored program maythen be resumed by depressing the CONTINUE key.

Decimal Display Keys (FLOAT, FIX ())

These keys are employed to control the format of numbers displayed bythe output display unit when the calculator is in the manual operatingand first key-log printing modes. Either a fixed or a floating decimalpoint format may be used. A fixed point indicator light 19 positionedimmediately below the FIX () key is turned on when the fixed decimalpoint format is being used. Similarly, a floating point indicator lightpositioned immediately below the FLOAT key is turned on when thefloating decimal point format is being used.

In the fixed decimal point format, numbers appear in the form in whichthey are most commonly written. The decimal point is fixed in itscorrect position. In the floating decimal point format, numbers appearin a normalized form with the decimal point located immediately afterthe most significant non-zero digit of the normalized number. Eachnormalized number is followed by an exponent comprising a positive ornegative power of ten and representing the number of digit places that,and the direction in which, the decimal point must be moved to expressthe normalized number in the fixed decimal point format. The followingexamples illustrate the relationship between numbers expressed in boththe fixed and floating decimal point formats.

    ______________________________________                                        FIXED DECIMAL     FLOATING DECIMAL                                            POINT FORMAT      POINT FORMAT                                                ______________________________________                                         1234.5       =        1.2345 × 10.sup.3                                 0.0012345    =        1.2345 × 10.sup.-3                               -1.2345       =       -1.2345 × 10.sup.0                                ______________________________________                                    

When the calculator is turned on and automatically initialized, theoutput display unit displays numbers in the floating decimal pointformat. If the output display is switched to the fixed decimal pointformat, it may subsequently be switched back to the floating decimalpoint format by simply depressing the FLOAT key. Every number displayedin the floating decimal point format includes the sign (if negative) andten most significant digits of the normalized number followed by thesign (if negative) of the exponent and two exponent digits. This isillustrated by the following examples:

    ______________________________________                                        NUMBERS TO       FLOATING DECIMAL                                             BE DISPLAYED     POINT DISPLAY                                                ______________________________________                                         1234.5           1.234500000                                                                              03                                                0.0012345        1.234500000                                                                             -03                                               -1.2345          -1.234500000                                                                              00                                               ______________________________________                                    

The output display may be changed to the fixed decimal point format bydepressing the FIX () key followed by a decimal digit key designatingthe desired number n (0-9) of digits to be displayed to the right of thedecimal point. Less significant digits are not displayed, and the leastsignificant digit to be displayed is rounded up if the nondisplayed nextleast significant digit is five or greater. This is illustrated by thefollowing examples for different values of n:

    ______________________________________                                        NUMBERS TO    VALUES      FIXED DECIMAL                                       BE DISPLAYED  OF n        POINT DISPLAY                                       ______________________________________                                        123.456784    2           123.46                                              -6.703256     2           -6.70                                               123.456784    5           123.45678                                           -6.703256     5           -6.70326                                            123.456784    0           123.                                                -6.703256     0           -7.                                                 ______________________________________                                    

If the FIX () key is depressed but not followed by a decimal digit key,the calculator will automatically treat the next key depressed as beingthe 0 key (i.e. n will thereupon equal 0 as in the last example).

Numbers of up to (and including) ten significant digits and their signs(if negative) may be displayed in the fixed decimal point format. Thus,(10-n) digits may be displayed to the left of the decimal point. If anumber to be displayed has more than (10-n) digits to the left of thedecimal point (i.e. is too large for the selected value of n), thedisplay of that number (not the whole display) overflows and thereuponreverts to the floating decimal point format. This is illustrated by thefixed decimal point display of FIG. 1 wherein the numbers contained inthe x and y registers have overflowed and are therefore displayed in thefloating decimal point format. It is also illustrated by the followingexample:

    ______________________________________                                        NUMBER TO   VALUE      ACTUAL                                                 BE DISPLAYED                                                                              OF n       NUMBER DISPLAYED                                       ______________________________________                                        1234567.89  5          1.23456789  06                                         ______________________________________                                    

If the first non-zero digit of a number to be displayed is more than ndigits to the right of the decimal point (i.e. is too small for theselected value of n), the display of that number (not the whole display)underflows. In this case only zeros will be displayed. This isillustrated by the following example:

    ______________________________________                                        NUMBER TO   VALUE     ACTUAL                                                  BE DISPLAYED                                                                              OF n      NUMBER DISPLAYED                                        ______________________________________                                        0.0000012   3         0.000                                                   ______________________________________                                    

Regardless of the way in which numbers are displayed, the calculatoralways stores all numbers and performs all calculations in the floatingdecimal point format. Furthermore, regardless of the number of digitsentered or displayed, each number is stored with twelve significantdigits, their associated sign, a two-digit exponent, and its associatedsign. Up to (and including) ten significant digits, their associatedsign, the two-digit exponent, and its associated sign can be displayed(however, no sign is displayed for positive numbers or exponents). Theremaining two digits (called guard digits) are not displayed. They areemployed to maintain greater than ten-place accuracy during calculationsand also to automatically round the tenth displayed digit.

The calculator has a dynamic range of from ±10⁻⁹⁸ to±9.999999999(99)×10⁹⁸. Whenever this range is exceeded during acalculation the STATUS indicator light 19 turns on.

Numeric Data Entry Keys (0-9), ., ENTER EXP, CHG SIGN, π)

The decimal digit keys 0-9 are depressed to enter numbers into thex-register. Numbers are entered serially, the last digit enteredbecoming the least significant digit. For example, the number 1325 isentered by sequentially depressing the decimal digit keys 1, 3, 2, and5. A number entered into the x-register is terminated as soon as anynon-data-entry key is depressed. Another number entered into thex-register will automatically replace a terminated number, but willbecome a part of any non-terminated number.

The decimal point (.) key is depressed to enter the decimal point intothe x-register. For example, the number 1.234 is entered by sequentiallydepressing the 1, ., 2, 3, and 4 keys. Regardless of the display format,it is not necessary to use the decimal point key when entering integers.If the decimal point key is not used, the decimal point will be assumedto have followed the last-entered digit. When the fixed decimal pointdisplay format is used, the calculator automatically positions thedecimal point. Similarly, when the floating decimal point display formatis used the calculator automatically corrects the exponent according tothe position of the decimal point.

The ENTER EXP key is depressed followed by one or two decimal digit keysto enter a one- or two-digit exponent (power of ten) into thex-register, the last digit entered becoming the least significant digit.If a third digit is entered, it will terminate entry of the exponent andbegin a new numeric data entry. A non-terminated number in thex-register may be multiplied directly by successive powers of ten bysimply entering successive exponents. For example, the product of8.3×10² ×10¹⁴ may be obtained by sequentially depressing the 8, ., 3,ENTER EXP, 2, ENTER EXP, 1, and 4 keys. If the ENTER EXP key isdepressed as the first key of a numeric data entry (i.e. before any ofthe decimal digit keys have been depressed or following a terminatednumber), the number 1 is entered into the x-register. For example, thenumber 1×10¹⁶ may be entered by depressing the ENTER EXP, 1, and 6 keys.

The CHG SIGN key is depressed to change the sign of any terminated orunterminated number in the x-register. If the CHG SIGN key is depressedas the first key of a numeric data entry, it changes the sign of thenumber then in the x-register (whatever the sign may be) and, once thatnumber is replaced by the first digit of the new data entry, it prefacesthe new data entry with a negative sign. This is illustrated by thefollowing example:

    ______________________________________                                        KEYS DEPRESSED CONTENTS OF x-REGISTER                                         ______________________________________                                                       -123.45                                                        CHG SIGN       123.45                                                         6              -6.                                                            7              -67.                                                           ______________________________________                                    

The CHG SIGN key is also depressed immediately following the ENTER EXPkey (or the last-entered digit of the exponent) to enter negativeexponents into the x-register. For example, the number 8.3×10⁻² ×10⁴×10⁻¹² may be entered by sequentially depressing the keys 8, ., 3, ENTEREXP, CHG SIGN, 2, ENTER EXP, 4, ENTER EXP, CHG SIGN, 1, and 2 keys andthe number 1×10⁻¹⁶ may be entered by depressing the ENTER EXP, 1, 6, andCHG SIGN keys.

The π key is depressed to enter the value of π (i.e. 3.14159265360) intothe x-register.

Clear keys (CLEAR x, CLEAR)

The CLEAR x key clears (i.e. sets to zero) the x-register. It does notaffect any other registers.

The CLEAR key clears the x-, y-, and z- (working) registers, clears thea- and b- (data storage) registers, and clears (or resets) the flag,which can be set by the SET FLAG key as hereinafter explained. It doesnot affect any other registers.

When the calculator is switched on, all of the working, program, anddata storage registers of the RWM are automatically cleared. Anyterminated numbers subsequently stored in them will automatically becleared and replaced by any new data entry.

Working Register Control Keys (↑, ↓, ROLL ↑, x⃡y)

The working register control keys are used to reposition the contents ofthe x-, y-, and z-registers. They do not affect any other registers.

When the ↑ key is depressed, the contents of the y-register shift to thez-register and the contents of the x-register appear in both the x- andy-registers. The contents of the z-register are lost.

When the ↓ key is depressed, the contents of the y-register shift to thex-register and the contents of the z-register appear in both the y- andz-registers. The contents of the x-register are lost.

When the ROLL ↑ key is depressed, the contents of the x-register shiftto the y-register, the contents of the y-register shift to thez-register, and the contents of the z-register shift to the x-register.No information is lost.

The x⃡y key is depressed to exchange the contents of the x- andy-registers. The contents of the z-register are unaffected by thisoperation.

Arithmetic Keys (+, -, ×, ÷)

These four keys are used to perform working register arithmeticoperations in which the contents of the x- and y-registers are employedas operands. The results of these arithmetic operations are stored inthe y-register and the contents of the x-register remain unchanged bythe arithmetic operations performed. These four keys do not affect anyother registers.

The + key is depressed to add the number in the x-register to the numberin the y-register, the sum appearing in the y-register.

The - key is depressed to subtract the number in the x-register from thenumber in the y-register, the difference appearing in the y-register.

The × key is depressed to multiply the number in the y-register by thenumber in the x-register, the product appearing in the y-register.

The ÷ key is depressed to divide the number in the y-register by thenumber in the x-register, the quotient appearing in the y-register.

The use of these keys and the working register control keys isillustrated by the following method of computing

    ______________________________________                                         ##STR4##                                                                             CONTENTS    CONTENTS    CONTENTS                                      KEYS DE-                                                                              OF          OF          OF                                            PRESSED x-REGISTER  y-REGISTER  z-REGISTER                                    ______________________________________                                        CLEAR   0           0           0                                             3       3           0           0                                              ↑                                                                              3           3           0                                             4       4           3           0                                             × 4           12          0                                             ROLL↑                                                                           0           4           12                                            8       8           4           12                                            x⃡y                                                                       4           8           12                                            9       9           8           12                                            -       9           -1          12                                             ↓                                                                             -1          12          12                                            +       -1          11          12                                            ROLL↑                                                                           12          -1          11                                            8       8           -1          11                                            x⃡y                                                                       -1          8           11                                            2       2           8           11                                            × 2           16          11                                            6       6           16          11                                            -       6           10          11                                             ↓                                                                             10          11          11                                            ÷   10          1.1         11                                            ______________________________________                                    

The answer, appearing in the y-register, is underlined.

Unary Function Keys (√x, x², 1/x, int x, CHG SIGN)

These five keys are used to perform unary functions in which thecontents of the x-register are employed as the argument. The results ofthe unary functions performed are placed in the x-register. These fivekeys do not affect any other registers.

The √x key is depressed to calculate the square root of the number inthe x-register. If the number is negative, the square root of itsabsolute value is calculated and the STATUS indicator light 19 turnedon. The STATUS indicator light remains on until the next key isdepressed.

The x² key is depressed to calculate the square of the number in thex-register. If the number is greater than √10×10⁴⁹, the number9.99999999999×10⁹⁸ is placed in the x-register and the STATUS indicatorlight 19 turned on. The STATUS indicator light remains on until the nextkey is depressed.

The 1/x key is depressed to calculate the reciprocal of the number inthe x-register. For example, 1/9.8 may be calculated by sequentiallydepressing the 9, ., 8, and 1/x keys.

The int x key is depressed to truncate the fractional part of the numberin the x-register. It does not affect the sign of the integer part ofthe number. For example, if the number -5.9 is contained in thex-register when the int x key is depressed, the number -5.0 will remain.

The CHG SIGN key has already been described above in connection with thenumeric data entry keys.

Data-Storage and Register-Transfer Keys (a, b, x→(), y→(), x←(), y⃡(),INDIRECT)

These keys are variously used to perform direct data storage and recall,direct storage-register arithmetic, indirect data storage and recall,and indirect storage-register arithmetic operations. As illustratedbelow, the a and b keys are depressed following any of the remainingfive keys of this group to specify the a- and b-registers, respectively.The a and b keys may also be used to directly recall the contents of thea- and b-registers, respectively, to the x-register without changing thecontents of the a- and b-registers themselves. Either of these functionsof the a and b keys may be performed in response to a single keystrokethereof. For example, the contents of the b-register may be directlyrecalled to the x-register by simply depressing the b key alone. Asnoted above the contents of the b-register itself will remain unchangedby this recall operation.

The x→(), y→(), x←(), and y⃡() keys ar used to control the transfer ofnumeric data from the x- and y-registers to the a- and b-registers and49 additional storage registers available to the user (at user addresses000-048) in the data storage section of the RWM and from these storageregisters to the x- and y-registers. If the 60 optional storageregisters included in the data storage section of the RWM (at useraddresses 049-108) are made available to the user, these same four keysmay also be used to control the transfer of numeric data from the x- andy-registers to these optional storage registers and from them to the x-and y-registers.

The specific storage register to or from which numeric data istransferred by these four keys is specified by the key or keys depressedimmediately following them. Accordingly, the a key is used to specifythe a-register, the b key to specify the b-register, and the decimaldigit keys 0-9 to selectively specify any of the available storageregisters at user addresses 000-108 of the data storage section of theRWM. For simplicity of description, the available storage registers atuser addresses 000-108 will hereinafter be referred to by theiraddresses (i.e. the storage register at any available address nnn willbe referred to as register nnn). If a non-existant or non-availablestorage register is designated, the STATUS indicator light is turned on,no data transfer or arithmetic operation is performed, and the operationof the calculator halts. (If such a register is designated while thecalculator is automatically executing a stored program, theprogram-counter specifies the program step immediately following theimproper operation.)

The x→() key is depressed followed by the a key, the b key, or decimaldigit keys n, n, n to directly store the contents of the x-register inthe a-register, the b-register, or register nnn respectively. In anycase, the contents of the x-register remain unchanged by this operation.For example, π may be stored directly in the b register by sequentiallydepressing the π, x→(), and b keys. Similarly, π may be stored directlyin register 027, by sequentially depressing the π, x→(), 0, 2, and 7keys. In each of these examples, π will also remain in the x-register.

The y→() key is depressed followed by the a key, the b key, or decimaldigit keys n, n, n to directly store the contents of the y-register inthe a-register, the b-register, or register nnn, respectively. In anycase, the contents of the y-register remain unchanged by this operation.For example, a number contained in the y-register may be stored directlyin register 000, without changing the contents of the y-register, bysequentially depressing the y→(), 0, 0, and 0 keys.

The x←() key is depressed followed by the a key, the b key, or decimaldigit keys n, n, n, to directly recall the contents of the a-register,the b-register, or register nnn, respectively, to the x-register. In anycase, the contents of the recalled register remain unchanged by thisoperation. For example, the contents of register 012 may be recalled tothe x-register, without changing the contents of register 012, bysequentially depressing the x←(), 0, 1, and 2 keys. Recall from the a-or b-register to the x-register may be accomplished in the same manneras described above, by simply depressing the a or b key alone.

The y⃡() key is depressed followed by the a key, the b key, or decimaldigit keys n, n, n, to exchange the contents of the y-register with thecontents of the a-register, the b-register, or register nnn,respectively. For example, a number in the y-register may be exchangedwith a number in register 048 by depressing the y⃡(), 0, 4, and 8 keys.

The direct storage and recall operations performed by the x→(), y→(),x←(), and y⃡() keys may be conveniently summarized by employing thefollowing notation: ##STR5## In this notation each pair of bracesimplies that any one of the enclosed group of key operations or storageregisters may be selected. The order of the successive pairs of bracesfrom left to right specifies the key-sequence required to perform theselected key operation with the selected storage register. Thus, any ofthe key operations enclosed in the left-hand pair of braces may beemployed with any of the storage registers enclosed in the right-handpair of braces by first depressing the key performing the selected keyoperation and then depressing the key or keys designating the selectedstorage register. The usefullness of these direct storage and recalloperations is illustrated by the following method of multiplying aseries of numbers n₁, n₂, etc. by a constant K, where n₁ =3, n₂ =11.2,etc. and K=1.684:

    ______________________________________                                                CONTENTS    CONTENTS    CONTENTS                                      KEYS DE-                                                                              OF          OF          OF                                            PRESSED x-REGISTER  y-REGISTER  a-REGISTER                                    ______________________________________                                        CLEAR   0           0           0                                             1, 0, 6, 8, 4,                                                                        1.684       0           0                                             y⃡( ), a                                                                  1.684       0           1.684                                         3       3           0           1,684                                          ↑                                                                              3           3           1,684                                         a       1.684       3           1.684                                         × 1.684       5.0520      1.684                                         1, 1, ., 2                                                                            11.2        5.0520      1.684                                          ↑                                                                              11.2        11.2        1.684                                         a       1.684       11.2        1.684                                         × 1.684       18.8608     1.684                                         ______________________________________                                    

The answers, appearing in the y-register, are underlined.

The x→(), y→(), x←(), and y⃡() keys may also be employed with the +, -,×, and ÷ arithmetic keys to perform direct register-arithmeticoperations in which the contents of the x-register or the y-register areemployed as one operand and the contents of the a-register, theb-register, or register nnn are employed as the other operand. Thesedirect register-arithmetic operations may be summarized as follows byusing the above-described notation: ##STR6##

Thus, the x→() key may be employed to directly perform any of thearithmetic operations enclosed by the second pair of braces upon thecontents of the x-register and the contents of any of the storageregisters enclosed by the third pair of braces and store the result inthe selected storage register without recalling the contents of theselected storage register and without changing the contents of thex-register. For example, the contents of the x-register may besubtracted from the contents of the b-register by sequentiallydepressing the x→(), -, and b keys. The difference is stored in theb-register, and the contents of the x-register remain unchanged by theoperation. Similarly, the contents of register 042 may be divided by thecontents of the x-register by sequentially depressing the x→(), ÷, 0, 4,and 2 keys. The quotient is stored in register 042, and the contents ofthe x-register itself remain unchanged by the operation.

The y→() key may be similarly employed to directly perform any of thearithmetic operations enclosed by the second pair of braces upon thecontents of the y-register and any of the storage registers enclosed bythe third pair of braces and store the result in the selected storageregister without recalling the contents of the selected storage registerand without changing the contents of the y-register. For example, thecontents of the y-register may be added to the contents of thea-register by sequentially depressing the y→(), +, and a keys. The sumis stored in the a-register, and the contents of the y-register remainunchanged by the operation. Similarly, the contents of register 038 maybe multiplied by the contents of the y-register by sequentiallydepressing the y→(), x, 0, 3, and 8 keys. The product is stored inregister 038, and the contents of the y-register remain unchanged by theoperation.

The x←() key may be employed to directly perform any of the arithmeticoperations enclosed by the second pair of braces upon the contents ofthe x-register and the contents of any of the storage registers enclosedby the third pair of braces and store the result in the x-registerwithout changing the contents of the selected storage register. Forexample, the contents of the a-register may be added to the contents ofthe x-register by sequentially depressing the x←(), +, and a keys. Thesum is stored in the x-register, and the contents of the a-registerremain unchanged by the operation. Similarly, the contents of thex-register may be multiplied by the contents of register 022 bysequentially depressing the x←(), x, 0, 2, and 2 keys. The product isstored in the x-register, and the contents of register 022 remainunchanged by the operation.

The y⃡() key may be employed to directly perform any of the arithmeticoperations enclosed by the second pair of braces upon the contents ofthe y-register and the contents of any of the storage registers enclosedby the third pair of braces and store the result in the y-registerwithout changing the contents of the selected storage register (i.e. they⃡() may be used as though it were a y←() key in performingregister--arithmetic operations).

For example, the contents of the b-register may be subtracted from thecontents of the y-register by sequentially depressing the y"(), -, and bkeys. The difference is stored in the y-register, and the contents ofthe b-register remain unchanged by the operation. Similarly, thecontents of the y-register may be divided by the contents of regiters039, by sequentially depressing the y⃡(), ÷, 0, 3, and 3 keys. Thequotient is stored in the y-register, and the contents of register 039remains unchanged by the operation.

The INDIRECT key is used with the above-described data-storage andregister-transfer keys to perform indirect data-storage and recall andindirect register-arithmetic operations, in which the contents of adirectly-addressed register (e.g. the a-register, the b-register or anyof the registers nnn) are employed as the address of anindirectly-addressed storage register (e.g. any of the other storageregisters nnn) to be used in these operations. When indirectlyaddressing any of the storage registers 000 through 048 or 108, caremust be taken to insure that the directly-addressed register containsthe proper address nnn of the indirectly addressed-register nnn. Theindirect address used is the absolute value of the integer part of thecontents of the directly addressed register. Thus, 1.732 will be treatedas the address of register 011, -6.99 as the address of register 006,0.999 as the address of register 000, and 106.75 as the address ofregister 106. Since the storage registers may only contain numeric data,the a- and b-registers may not be used as the indirectly-addressedregisters in these operations.

The indirect data storage and recall operations may be summarized asfollows by again using the above-described notation without braces forthe INDIRECT key: ##STR7## Thus, the x→() and y→() keys may be employedwith the INDIRECT key to indirectly store the contents of the x- andy-registers, respectively in any storage register nnn designated by thecontents of any of the other data storage registers. Moreover, this maybe accomplished without changing the contents of the x- and y-registersor of the directly addressed storage register. For example, the contentsof the x-register may be indirectly stored in the storage registerdesignated by the contents of the a-register by sequentially depressingthe x→(), INDIRECT, and a keys. The contents of the x-register and thea-register remain unchanged by this operation. Similarly, the contentsof the y-register may be indirectly stored in the storage registerdesignated by the contents of register 022 by sequentially depressingy→(), INDIRECT, 0, 2, and 2 keys. The contents of the y-register andregister 022 remain unchanged by this operation.

The x←() key may be similarly employed with the INDIRECT key toindirectly recall to the x-register the contents of any storage registernnn designated by the contents of any of the other storage registers.This is accomplished without changing the contents of either thedirectly- or indirectly-addressed storage register. For example, thecontents of the register nnn designated by the contents of theb-register may be indirectly recalled to the x-register by sequentiallydepressing the x←(), INDIRECT, and b keys. The contents of theb-register and of the indirectly-addressed register remain unchanged bythis operation.

The y⃡() key may be employed with the INDIRECT key to indirectly exchangethe contents of the y-register with the contents of any storage registernnn designated by the contents of any of the other storage registers.This is accomplished without changing the contents of thedirectly-addressed storage register. For example, the contents of they-register may be indirectly exchanged with the contents of the registerdesignated by register 041 by sequentially depressing the y⃡(), INDIRECT,0, 4, and 1 keys. The contents of register 041 remain unchanged by thisoperation.

The indirect register-arithmetic operations may be summarized asfollows: ##STR8## In connection with the indirect register arithmeticoperations it should be noted that the INDIRECT key may also bedepressed immediately after the selected arithmetic key. Thus, theindirect register-arithmetic operations may also be summarized asfollows: ##STR9##

Thus, any of the x→(), y→(), x←(), and y⃡() keys may be employed with theINDIRECT key and any of the arithmetic keys to indirectly performregister-arithmetic operations employing the contents of either the x-or the y-register as one operand and the contents of any of the storageregisters nnn designated by the contents of any of the other storageregisters as the other operand. In the case of the x→() and y→() keys,the results of these operations are stored in the indirectly addressedstorage register nnn, and the contents of the x- and y-registers and thedirectly-addressed registers are not changed. Similarly, in the case ofthe x←() and y⃡() keys, the results of these operations are stored in thex- and y-registers, respectively, and the contents of the directly andindirectly addressed registers are not changed.

For example, the contents of the x-register may be added to the contentsof the register nnn designated by the contents of the a-register bysequentially depressing the x→(), INDIRECT, +, and a keys. The sum isstored in the indirectly-addressed register nnn, and the contents of thex-register and the a-register remain unchanged by this operation.Similarly, the contents of the storage register nnn designated by thecontents of register 014 may be multiplied by the contents of they-register by sequentially depressing the y→(), ×, INDIRECT, 0, 1, and 4keys. The product is stored in the indirectly-addressed storage registernnn, and the contents of the y-register and register 014 remainunchanged by the operation. Similarly, the contents of the register nnndesignated by the contents of the b-register may be subtracted from thecontents of the x-register by sequentially depressing the x←(),INDIRECT, -, and b keys. The difference is stored in the x-register, andthe contents of the b-register and the indirectly-addressed registerremain unchanged by the operation. As a last example, the contents ofthe y-register may be divided by the contents of the register nnndesignated by the contents of register 008 by sequentially depressingthe y⃡(), INDIRECT, ÷, 0, 0, and 8 keys. The quotient is stored in they-register, and the contents of register 008 and theindirectly-addressed register nnn remain unchanged by this operation.

Multiple-level indirect addressing may be performed to any desired levelin the above described indirect data storage and recall and indirectregister arithmetic operations by sequentially depressing the INDIRECTkey once for each desired level. Multiple-level indirect data storageand recall may be summarized as follows: ##STR10## Thus, for example,the contents of the x-register may be indirectly stored in the contentsof register 017 designated by the contents of register 003 in turndesignated by the contents of the a-register by sequentially depressingthe x→(), INDIRECT, INDIRECT, and a keys. The contents of thex-register, the a-register, and register 003 remain unchanged by thisoperation. Similarly, the contents of register 046 designated by thecontents of register 031 in turn designated by the contents of register000 in turn designated by the contents of register 025 may be exchangedwith the contents of the y-register by sequentially depressing the y⃡(),INDIRECT, INDIRECT, INDIRECT, 0, 2, and 5 keys. The contents ofregisters 025, 000 and 031, remain unchanged by this operation.

Multiple level indirect register-arithmetic may be similarly summarizedas follows: ##STR11## Thus, assuming, for example, that the 60 optionalstorage registers 049-108 are available to the user, the contents of they-register may be subtracted from the contents of register 108designated by the contents of register 082, in turn designated by thecontents of register 049 by sequentially depressing the y→(), INDIRECT,INDIRECT, -, 0, 4, and 9 keys. The difference is stored in register 108and the contents of the y-register, register 049, and register 082remain unchanged by this operation. Similarly, the contents of thex-register may be divided by the contents of register 106 designated bythe contents of register 056 in turn designated by the contents of theb-register by sequentially depressing the x←(), ÷, INDIRECT, INDIRECT,INDIRECT, and b keys. The results are stored in the x-register, and thecontents of the b-register and registers 003, 056, and 106 remainunchanged by this operation.

Numeric Address Termination

As described above, each of the available numerically-addressed storageregisters 000 through 048 or 108 employed in the foregoing data-storageand register-transfer operations is properly addressed by selectivelydepressing the decimal digit keys to specify its three-digit address.Upon entry of the third digit, the numeric address is automaticallyterminated. Any immediately following digit entries are therefore notintrepreted as part of the numeric address, but rather as the beginningof a new data entry. Thus, for example, if the x→(), 1, 0, 3, 2, and 5keys are sequentially depressed, the contents of the x-register arestored in register 103, and the number 25 is entered into thex-register. Similarly, if the y→(), +, 0, 0, 2, 1, and + keys aresequentially depressed, the contents of the y-register are added to thecontents of register 002, and the number 1 is entered into thex-register and thereupon added to the contents of the y-register.

A numeric address may also be terminated, without entering leading zerosof the address, by depressing any non-numeric key except the STEP PRGMkey or, if the calculator is in the manual operating or first key-logprinting mode, the CONTINUE key. However, most of the terminating keyentries that may be used will also be executed. For example, if thex→(), 2, and + keys are sequentially depressed, the contents of thex-register are stored in storage register 002 and also added to thecontents of the y-register. Similarly, if the y→(), +, 3, 8, and a keysare sequentially depressed, the contents of the y-register are added tothe contents of register 038, and the contents of the a-register arerecalled to the x-register.

When the calculator is in the manual operating or first key-log printingmode, the STOP key may be used to terminate a numeric address if ano-operation address-terminating key entry is desired. For example, bysimply depressing the x→(), 3, and STOP keys the contents of thex-register may be stored in register 003 without performing any otheroperation. Similarly, when formulating or entering a program by whichthe calculator is to be controlled in the automatic operating mode, aCONTINUE program step may be employed to terminate a numeric address ifa no-operation address-terminating program step is desired. For example,if the program steps y→(), +, 2, 9, CONTINUE, and 3 are sequentiallyencountered when the calculator is in the automatic operating mode, thecontents of register 29 are multiplied by the contents of they-register, and the product is stored in register 29. No operation isperformed by the CONTINUE program step, and the next program step 3 isstored in the x-register as the beginning of a new data entry.

Since every numeric storage register except optional registers 100-108may be uniquely specified by less than three digits, these abbreviatedaddress-termination features permit significant reductions in the numberof key-operations and program steps required to perform manycalculations. Moreover, these same address termination features may beused in connection with the four-digit numeric addresses of the programstorage section of the RWM to achieve still further reductions in thenumber of key-operations and program-steps required to perform manycalculations.

Program-Control Keys (GO TO, IF x<y, IF x=y, IF x>y, IF FLAG, SET FLAG,LABEL, SUB/RETURN)

All of the previously-described keys except the FLOAT, FIX(), RUN, PRGM,KEY LOG, LIST, LOAD, and RECORD keys may be employed both forcontrolling the operation of the calculator during the manual operatingand first key-log printing modes and for entering program steps into thecalculator during the program entering and second key-log printingmodes. When the calculator is in the manual operating mode, the user maycontinuously observe the output display of the contents of the x-, y-,and z-registers and, in accordance with his observations, make his owndecisions about what to do next at any stage of the calculation.However, this is not possible when the calculator is executing a storedprogram at high speed in the automatic operating mode. The above eightprogram-control keys have therefore been provided to permit thecalculator itself to test calculated quantities and make decisions basedon those tests during the automatic execution of an internally-storedprogram. These eight keys may be used to permit unconditional branching(or transfers), conditional branching (or transfers), symbolic orlabelled branching, storage of "yes-no" information in a flag andconditional branching based on that "yes-no" information at a laterstage in the execution of a program, and unconditional or conditionalbranches to pre-defined program routines with return to the main programsequence upon completion.

Branching instructions in a program cause the user program counter tospecify an address other than the next sequential address in the programstorage section of the RWM, whereupon execution of the program continuessequentially from the new address. If a branch is conditional, thecalculator makes a decision, based upon a specified condition, whetheror not to branch. However, if the branch is unconditional, thecalculator has no option, and must branch to the address specified inthe program (e.g. by a GO TO program step followed by a numeric addressnnnn).

The GO TO key is depressed followed by decimal digit keys specifying aselected four-digit address nnnn in the program storage section of theRWM to set the user program counter to the selected address nnnn. Whenthis sequence of keycodes is encountered as a sequence of program steps,an unconditional branch is made to the address indicated and the programstep stored at that address is executed. Execution of the program thenautomatically continues to run from that address.

For simplicity of description the terms "keys" and "program steps" willhereinafter be used synonomously since the remaining keys of this groupare used almost exclusively to enter keycodes into the calculator asprogram steps during the program entering mode of the calculator. All ofthe program steps so entered are automatically executed during theautomatic operating mode of the calculator.

The four IF keys are used for conditional branching. The IF x<y, IF x=y,and IF x>y keys compare the numeric values contained in the x- andy-registers to determine if the number in x is less than the number iny, equal to the number in y, or greater than the number in yrespectively. The IF FLAG key tests the condition ("yes-no") of theflag, which is controlled by the SET FLAG key hereinafter explained.There can be only two possible results to each test made by each ofthese four keys. The condition tested is either "met" (YES) or "not met"(NO).

When the condition tested is met (YES), the next program step followingthe IF is automatically executed. However, when the condition tested isnot met (NO), the calculator automatically skips (ignores) the next fourprogram steps and continues execution at the fifth program stepfollowing the IF.

If the program steps immediately following the IF constitute a numericaddress nnnn and the condition tested is met (YES), an automatic branchis made to that address nnnn. The program step stored at address nnnn isthereupon executed, and automatic execution of the program continuedfrom there. If the program steps immediately following the IF constituteoperations (e.g. +, ↑, etc.) then no branch occurs and the operationsare executed.

When an IF program step (other than IF FLAG) is encountered, the twonumbers in the x- and y-registers are automatically rounded before thetest is made. In each register, the tenth digit of the number is roundedaccording to the value of the guard digits; the guard digits are thenset equal to zero. Thus the numbers to be tested actually have the samevalues as would appear in a floating point display with all tensignificant digits displayed. After the test has been made, the numbersin the x- and y-registers retain their rounded values. This means thatthe actual values of the number in the x- and y-registers may bedifferent after the test than before. If the resulting slight loss inaccuracy is undesireable, the numbers in the x- and y-registers can bestored in the data-storage section of the RWM before the IF test is madeand can be recalled and substituted for the rounded numbers after the IFtest is completed.

The use of the IF x>y and IF x<y keys is illustrated by employing thefollowing sequence of program steps beginning with an IF x>y programstep and including a three-step conditional routine for taking theabsolute value of the contents of the y-register: ##STR12## If thecontents of the x-register are greater in value than the contents of they-register (i.e. condition met), then every program step in thissequence is executed and the absolute value of the contents of they-register is calculated. As described above CONTINUE is a no-operationprogram step. It is used in this and the following examples to fill inthe fourth program step to be skipped if the test condition is not met.If the contents of the x-register are equal to or greater in value thanthe contents of the y-register (i.e. the condition is not met), then thefour program steps immediately following the IF x>y program step areskipped and execution continues beginning with the ↑ program step. Inthis case the absolute value of the contents of the y-register is notcalculated.

The use of the IF x=y key is illustrated by employing the followingsequence of program steps: ##STR13## If the contents of the x-registerequal the contents of the y-register in value (i.e. condition met), thenevery program step in this sequence is executed. This results in anautomatic branch to execute the program step stored at user address0023. However, if the contents of the x-register do not equal thecontents of the y-register in value (i.e. condition not met), the fourprogram steps immediately following the IF x=y program step are skippedand execution continues beginning with the + program step.

The use of the IF FLAG key is illustrated by the following sequence ofprogram steps: ##STR14## If the flag controlled by the SET FLAG key hasbeen set (i.e. condition met), then every program step in this sequenceis executed. This results in an automatic branch to execute the programstep stored at user address 0041. However, if the flag controlled by theSET FLAG key has not been set (i.e. condition not met), then the fourprogram steps immediately following the IF FLAG program step are skippedand execution continues beginning at the SET FLAG program step bysetting the flag.

The SET FLAG key establishes the condition to be tested by the IF FLAGkey. The YES condition is established when a SET FLAG keycode isencountered either as a program step or as a keyboard entry. The NOcondition is established by clearing the flag. This occurs automaticallywhenever the calculator is switched on or whenever a CLEAR or IF FLAGkey-code is encountered either as a program step or as a keyboard entry.If the flag condition must be retained for use later, the program mustinclude a SET FLAG program step in the sequence of program stepsexecuted following the flag-clearing program step. The flag enables theuser to select the conditions which will determine whether a conditionalbranch (or operation) is to be made.

The LABEL key allows relocatable symbolic addresses to be used within aprogram. A LABEL key immediately followed by any other programmable key(e.g. LABEL, π) except the END key serves as a symbolic address that maybe inserted in a program immediately before any program step a user maywish to relocate independently of its absolute (numeric) address. Thissymbolic address is relocated by a search command comprising a GO TO keyimmediately followed by the symbolic address itself (e.g. GO TO, LABEL,π). In response to this search command, the user program counter isreset to the first user available address 0000 in the program storagesection of the RWM and is sequentially incremented in a search operationuntil the symbolic address (e.g. LABEL, π) is found. The user programcounter then specifies the next address which is the program stepdesignated by the symbolic address.

If the search command came from the keyboard, the calculator waits forthe next key to be depressed. However, if the search command came fromthe program, then execution automatically continues at the program stepdesignated by the symbolic address. The keys of the symbolic addressitself serve as no-operation codes and are ignored during execution ofthe program. This may be illustrated by the following sequence ofprogram steps.

    ______________________________________                                                      PROGRAM                                                         ADDRESS       STEP                                                            ______________________________________                                        0098          --                                                              0099          GO TO                                                           0100          LABEL                                                           0101          ÷                                                           0102          etc.                                                            .             .                                                               .             .                                                               .             .                                                               0362          --                                                              0363          LABEL                                                           0364          ÷                                                           0365          ↑                                                         0366          etc.                                                            ______________________________________                                    

The search for the symbolic address "LABEL, ÷" is initiated immediatelyafter address 0101 is designated by the user program counter and startsat address 0000. When the symbolic address is found, program executioncontinues with the ↑ program step at address 0365. The ÷ program, steps0101 and 0364, serving as part of the symbolic address are not executed.

A specific symbolic address cannot be used to specify more than onelocation at any one time. If it is, only the first (lowest order numericaddress) specified will be valid (i.e. the point of transfer). Anynumber of different labels can be used at one time, limited to thenumber of keys available to follow the LABEL key.

If transfer to an undefined symbolic address occurs, the calculator willsearch all of program memory, and if the symbolic address is not found,will stop with the STATUS indicator light on. The program-counter willspecify the next following program steps.

Branching to a symbolic address offers considerable advantages overbranching to an absolute address. Programs with symbolic addresses canbe stored anywhere in the program storage section of the RWM and can beeasily moved and relocated because there are no absolute addresses to bechanged. Also, any time a program is to be corrected (i.e. program stepschanged, added or deleted), any absolute addresses must be checked incase they themselves must now be changed as a result of the corrections.This may entail substantial bookkeeping by the user. If symbolicaddresses are used instead of absolute addresses, the corrections willnot affect the symbolic addresses.

The main disadvantage of using symbolic addresses is that a search takesconsiderably more time (depending upon the location of the label inmemory) than does a branch to an absolute address. Usually, this willhave no significance because, in this case, "time" constitutes only afew thousandths of a second. Even if time is a significant factor, theuser may still take advantage of symbolic addresses by writing hisoriginal program with symbolic addresses and once the program has beencompletely debugged, changing the symbolic addresses to the appropriateabsolute addresses.

The SUB/RETURN key is used to transfer to (i.e. call) a subroutine(subprogram) and return from the subroutine to the point in the callingprogram where the transfer was initiated. Subroutines may be nested upto a depth of five. An attempt to nest to a depth of more than five isan error, stopping execution of the program and turning on the STATUSindicator light. Both the automatic initialization occuring at turn-onand the END key (given either as a program step or a keyboard entry)automatically reset the nesting to a depth of zero so that all fivedepths are then available. A GO TO key followed by a SUB/RETURN key andeither an absolute numeric or symbolic labelled address may be used inthe calling program to (unconditionally) call a subroutine. The addressused specifies the starting address of the subroutine. If a symbolicaddress is used, the first two program steps of the subroutine must alsobe the same symbolic address. An IF key followed by GO TO and SUB/RETURNkeys and either an absolute numeric or symbolic labelled startingaddress may also be used in the calling program to conditionally call asubroutine. Execution of the steps of the subroutine startsautomatically as soon as the subroutine is called. A SUB/RETURN key mustbe included as the last step to be executed in the subroutine. TheRETURN causes a branch to the "return-address" in the calling program.The return address is always the address immediately following the laststep used to call the subroutine. Execution of the calling program thencontinues automatically, starting at the return address.

Any number of subroutines may be called individually during a program.However, it is also possible to use more than one subroutine at onetime. One subroutine can call a second subroutine which, in turn, cancall a third subroutine, and so on. This multiple-calling is known as"nesting". The calculator can remember (store) from one to fivereturn-addresses at a time so that the subroutines may be nested up to adepth of five. Returns are made on a "last-in, first-out" basis, thereturn always being made to the last return-address stored. As soon asthe return is made, that return-address is forgotten (erased fromstorage) so that the previous address now becomes the "last" one. Thusthe returning order is always the opposite of the calling order.

A program written as a subroutine may also be used as a "stand-alone"program. This is accomplished by depressing the END key to erase anyreturn-addresses currently stored in the calculator and by not using theSUB/RETURN key when addressing the memory before the program is run.

Special Function Keys (FMT, PRINT/SPACE, PAPER)

The FMT (format) key is used to initiate special operations nototherwise defined and implemented by the other basic keys of thecalculator. It is always used with other keys and, in effect, serves tore-define these other keys to implement the desired special operations.Several of these special operations associated with the FMT key aredefined as part of the basic calculator. Others have been defined aspart of associated plug-in ROM modules and are available only when theassociated ROM modules are plugged into the calculator.

The command-sequence FMT, ↑ and FMT, ↓ are used to operate the X-Yplotter peripheral unit. They are part of the basic calculator. The X-Yplotter-input commands are PEN ↑, PEN ↓, and x and y coordinates towhich the pen-carriage is to be moved. The x and y coordinates arespecified by decimal numbers in the range 0000 to 9999. Thecorresponding actual pen range of physical movement is determined byadjustments on the plotter itself. The FMT, ↑ command-sequence causesthe pen to be raised and the contents of the x- and y-registers to befed to the plotter as the x and y coordinates to which the pen is to bemoved. The FMT, ↓ command-sequence lowers the pen and transmits the x-ycoordinates. Note that for both commands the pen is raised or loweredfirst and the pen carriage is then moved. The x-y coordinates in the x-and y-registers must be pre-scaled by the user in the range 0000 to9999. If these limits are violated, the following events occur:

1. If the contents of the x- and/or y-registers are less than 0000 (i.e.negative), 0000 is sent to the plotter, the pen is raised, moved, andlowered.

2. If the contents of the x- and/or y-registers are greater than 9999 ,9999 is sent to the plotter, the pen is raised, moved, and lowered.

The result is to plot a series of dots along the boundary of the plot.The raising and lowering of the pen is a visual and audible warning tothe user that he is plotting out-of-bounds.

The basic calculator includes provision for recording a user-program inthe program storage section of the RWM as a secure program. Thisprovision is completely distinct from a protected recording obtained byphysically notching the magnetic card. A secure program is, bydefinition a program which can be executed only. It cannot be listed,recorded, looked-at in the program mode, edited, or changed in any way.It is a program which can only be executed in the automatic operatingmode at high speed by using the CONTINUE key (or step-by-step using theSTEP PROM key hereinafter explained).

Any program entered by the user from the keyboard input unit into theprogram storage section of the RWM, or any non-secure program loadedfrom a magnetic card, can be recorded as a secure program. This isaccomplished in the same manner as described above in connection withthe RECORD key except that the keys FMT and RECORD are sequentiallydepressed in the named order to initiate the recording operation. Theprogram thereupon recorded on the magnetic card or cards is a secureprogram. The original program also remains in the program storagesection of the RWM as a non-secure program, and can be recorded again,either as a secure or non-secure program. It should be noted that oncerecording of a secure program has begun, it must be completed bycontinuing to insert cards until recording is terminated by an ENDprogram step. If the recording process is interrupted by depression ofthe STOP key, the recording will be terminated but the original programstored in the program storage section of the RWM then becomes a secureprogram and can only be executed--no further recordings can be made.

If a program stored in the program storage section of the RWM is asecure program (either by loading a program recorded as a secure programor by the STOP default outlined above) the following conditions prevail:

1. If the PRGM key is depressed, the entire program memory is cleared.

2. If LIST or RECORD are depressed, they are ignored, so that no listingor recording of the program can be made. These actions do not destroythe program--they are just ignored.

3. Since the program is destroyed by switching to the PRGM mode, theprogram cannot be changed or edited in any way.

Loading of a secure program is no different than loading a non-secureprogram--the same procedure holds. Several secure programs may bechain-loaded. If a non-secure program is loaded into the calculator whena secure program is already stored therein, the program storage sectionof the RWM is cleared of the secure program in all areas not loaded bythe non-secure program so that no trace of the secure program remainsafter loading the non-secure program. Thus, a non-secure program may notbe chain-loaded after a secure program. However, the reverse can bedone--a secure program can be chain-loaded to a non-secure program butthe composite program is then secure.

The command sequence FMT, GO TO is used to implement automatic orprogram-controlled loading of magnetic program cards. The effect of FMTGO TO is the same as the following sequence: GO TO, O, LOAD, GO TO, O,and CONTINUE. This may be used to load a program from the keyboard, withautomatic initiation of execution, or it may be used in a program to"link" programs. If the magnetic card reading and recording unit is notloaded with a magnetic card, the INSERT CARD indicator light will comeon indicating to the user that a magnetic card should be inserted. TheLOAD routine operates in the same manner as described above inconnection with the LOAD key and is terminated by an END program step onthe magnetic card.

The command sequence FMT, x→ causes the contents of the availablenumeric-addressed data-registers in the data storage section of the RWMto be recorded on a magnetic card. The INSERT CARD indicator light comeson, and the recording continues, pass-after-pass, card-after-card untilall registers are recorded, at which time the magnetic card reading andrecording unit stops and the INSERT CARD indicator light goes out. Ifthe FMT, x→ command sequence was executed from a stored-program, theprogram will return to execution at the keycode immediately followingthe x→ command. Recording may be terminated after any card by depressingthe STOP key if the FMT x→ command sequence came from a stored program,execution may then be resumed by depressing the CONTINUE key.

The command sequence FMT x← causes the loading of the availablenumeric-addressed data registers in the data storage section of the RWMfrom one or more magnetic data cards. These registers are loadedcard-after-card until all the registers are loaded. The INSERT CARDlight remains on, and the card unit continues to run until all areloaded. The loading may be terminated by a STOP key. If the FMT, x←command sequence is executed from a stored program, execution resumesafter a completed data load.

The PRINT/SPACE key causes the contents of the x-register to be printedin the same format as it is displayed (i.e. FIX (), n, or FLOAT). Ifadditional PRINT/SPACE commands follow immediately, they will cause theprinter to space (print a blank line). If the PRINT/SPACE commandfollows immediately after a numeric entry to x (from the keyboard orfrom a sequence of digit-keys in a program) the numeric printout isfollowed by an * (asterisk) indicating that this was a data entry andnot a computed result.

The PAPER key is depressed to space the strip of thermal-sensitive paperused by the output printer unit. It continues to drive the paper upwarduntil it is released.

Program Checking and Editing Keys (STEP/PRGM, BACK/STEP)

The STEP PRGM key is not programmable and is used, from the keyboardonly, to single-step programs. When the calculator is in the manualoperating mode the STEP PRGM key single-steps program execution. Eachtime STEP PRGM is depressed the program counter is incremented by one sothat one program step is executed. When the calculator is in the programmode the STEP PRGM key enables the program steps stored in the programstorage section of the RWM to be viewed. Each time the STEP PRGM key isdepressed, the program counter is incremented by one, so that theaddress and program step displayed in the y-register shifts to thez-register, those in the x-register shift to the y-register and the nexthigher address and program step appears in the x-register.

The BACK STEP key is not programmable and is used to decrement the userprogram counter by one each time it is pressed. This backs up the outputdisplay (i.e. does just the opposite of the STEP PRGM key). It shouldonly be used in the program mode. If the STEP PRGM and BACK STEP keysare depressed alternately, the same program step will be executedrepeatedly. This key is extremely useful in editing and checkingprograms and when used with the PRGM STEP key permits the user toadvance either forward or backward through a stored program one step ata time.

Definable and Redefinable Keys

The half keys A-O comprising the group of definable keys 91 enable thecalculator to be tailored to the special needs of the user. Operation ofthese keys is defined by the various plug-in ROM modules 92 that may beused with the calculator. Without these ROM modules the definable keys91 serve no function and accidently depressing them, or encounteringthem in the execution of a stored program, will result in a completelynon-destructive no-operation.

The plug-in ROM modules 92 include the alpha ROM module mentioned above,a definable functions ROM module, a mathematics ROM module, a statisticsROM module, and a typewriter ROM module. Both the alpha ROM module andthe typewriter ROM module redefine nearly all of the keys of thekeyboard as well as defining the definable keys 91 themselves. Thedefinable functions ROM module, the mathematics ROM module, and thestatistics ROM module each uniquely define the definable keys alone andmay each be used at the same time as the alpha ROM module or thetypewriter ROM module.

A different overlay 192 is associated with each of the definablefunctions, mathematics, and statistics ROM modules and is employed withthe definable keys 91 to identify the functions performed thereby whenits associated ROM module is plugged into the calculator. Each of theseoverlays 192 comprises a thin metal template that fits over thedefinable keys 91 and latches into a recess around them. The graphics onthese templates visually complete the key shapes and indicate the keyfunction. A small tab positioned just above the nameplate releases eachtemplate, which then pops up enough to grasp. Three holes 196 near thetop edge of each template allow direct viewing of three light-emittingdiode indicator lights used to indicate various operating conditionsassociated with the routines implemented by the ROM module. When theoverlay and its associated ROM module are not in use they may be securedtogether by a pair of tabs 198 provided on the ROM module.

Alpha ROM Module

The Alpha ROM module redefines the keyboard input unit as indicated bythe letters printed on the tops of the definable keys 91 and the lettersand symbols printed on the front sides of most of the other keys toprovide an "alpha keyboard" (see FIG. 8) containing 54 character-entrykeys, 5 operational keys, and 16 "non-essential" keys (thesenon-essential keys are either inoperative or duplicate other keys duringthe alpha mode). During the alpha mode, the key-log feature isdeactivated (thus, any keys pressed are not logged).

The 54 character-entry keys include all of the English alphabeticcharacters A-Z, all of the decimal numbers 0-9, and all of the followingsymbols @, √, / (printed by the ÷ key), ×, -, +, π, →, ,, ., =, $, ?,(,), %, ", and #. Depressing any of these keys during the alpha mode,will cause the alphameric character or symbol indicated thereby to beprinted out in line-printer fashion. The output printer unit operates asa line printer in that each character is not immediately printed out,but rather an entire line (16 characters) is first stored and thenprinted out. The print-out occurs as the 16th character is entered.

The 5 operational keys include the FMT key, the STOP key, a SPACE key(normally the CONTINUE key), a CLEAR/RETURN key (normally the CLEARkey), and a PAPER key.

During the alpha mode, the following operational keys are depressed toperform various printing operations. Depressing the FMT key twiceredefines the keyboard to the alpha mode, after which character keys maybe depressed. After the last character is entered, depressing the FMTkey causes a line print, a line feed, and returns the keyboard to normaloperation. (The output display is blanked during the alpha mode,although the contents of the x-, y-, and z-registers remain unchanged.)For example, the alphabet may be printed by sequentially depressing theRUN, STOP, FMT, FMT, A through Z, and FMT keys.

Depressing the SPACE key insets a blank space in the printed line(similar in operation to the space bar on the typewriter).

Depressing the CLEAR/RETURN key causes a line print and advances theprinter to the next line (i.e. like a typewriter carriage-return andline feed operation). The alpha mode remains set after this instruction.Successive CLEAR instructions will cause the printer to advance, withoutprinting, one line for each instruction.

Depressing the STOP key terminates the alpha mode without a line printor line feed. Any characters entered but not printed will be erased whenSTOP is pressed. This instruction is not programmable and should not beused while programming alpha messages.

The PAPER key is a manual paper advance control. This operation is notprogrammable.

The 16 "non-essential" keys include the ↓, x⃡y, ↑, PRINT/SPACE,SUB/RETURN, END, BACK/STEP, STEP/PRGM, FLOAT, FIX (), RUN, PRGM, KEYLOG, LIST, LOAD, and RECORD keys. These keys are not essential for alphaprinting operations. The non-essential keys which are programmableduplicate the SPACE key, while most of the non-programmable keys are"locked-out" (i.e. not operational) during alpha printing operations.Pressing BACK STEP or STEP PRGM will cause 1 or 0, respectively, to beprinted.

We claim:
 1. A programmable electronic calculator comprising:keyboardinput means for entering information; first memory means into whichinformation may be written and from which information may be read;second memory means for storing routines and/or subroutines to beexecuted by the calculator in performing selected functions; processingmeans responsive to information from the keyboard input means or thefirst memory means for selectively executing one or more of the routinesand/or subroutines stored in the second memory means to perform selectedfunctions employing information from one or both of the keyboard inputand first memory means; magnetic reading and recording means forrecording information stored in the first memory means onto one or moreexternal magnetic record members and for loading information recorded onsaid one or more external magnetic record members into the first memorymeans; control means for enabling the magnetic reading and recordingmeans to separately record onto said one or more of said externalmagnetic record members both program information and data stored in thefirst memory means and to thereafter separately reload the recordedprogram information and data back into the first memory means from theone or more external magnetic record members; and output means forproviding an output indication of the functions performed by thecalculator.
 2. A programmable electronic calculator as in claim 1wherein:said first memory means includes separate data and programstorage sections; said keyboard input means includes a control keyoperable with a first transfer key for conditioning the calculator torecord data stored in the data storage section of the first memory meansonto one of said external magnetic record members and operative with asecond transfer key for conditioning the calculator to load data fromone of said external magnetic record members into the data storagesection of the first memory means; said keyboard input means includes arecord key for conditioning the calculator to record program informationstored in the program storage section of the first memory means onto oneof said external magnetic record members; and said keyboard input meansincludes a load key for conditioning the calculator to load programinformation from one of said external magnetic record members into theprogram storage section of the first memory means.
 3. A programmableelectronic calculator as in claim 2 including logic means responsive toactuation of the control key with the first or second transfer key fortransferring data out of or into the data storage section of the firstmemory means and responsive to actuation of either the record key or theload key for transferring program information out of or into the programstorage section of the first memory means.
 4. A programmable electroniccalculator as in claim 3 wherein said logic means comprises meansresponsive to a subroutine stored in the second memory means.
 5. Aprogrammable calculator comprising:keyboard input means for enteringinformation; first memory means into which information may be writtenand from which information may be read; second memory means for storingroutines and/or subroutines to be executed by the calculator inperforming selected functions; processing means responsive toinformation from the keyboard input means or the first memory means forselectively executing one or more of the routines and/or subroutinesstored in the second memory means to perform selected functionsemploying information from one or both of the keyboard input and firstmemory means; magnetic reading and recording means for recording aprogram stored in the first memory means onto one or more externalmagnetic record members and for loading a program recorded on said oneor more external magnetic record members into the first memory means;first control means for designating any program stored within the firstmemory means as being secure when that program is recorded onto said oneor more external magnetic record members; second control means foridentifying a secure program loaded into the first memory means fromsaid one or more external magnetic record members and for thereuponpreventing the calculator from listing or subsequently re-recording thesecure program; and output means for providing an output indication ofthe functions performed by the calculator.
 6. A programmable electroniccalculator as in claim 5 wherein:said keyboard input means includes acontrol key, a record key, and a load key; and said first control meansincludes means responsive to actuation of the control and record keysfor causing the magnetic reading and recording means to mark a programas being secure when that program is recorded on said one or moreexternal magnetic record member.
 7. A programmable electronic calculatoras in claim 6 wherein said second control means includes means operativefor setting a security word in the first memory means when a programmarked as being secure is loaded into the first memory means from saidone or more external magnetic record members, includes means forexamining the security word each time the calculator is directed to listor record a program stored in the first memory means, and includes meansfor preventing any such listing or recording thereof when the securityword is set.
 8. A programmable electronic calculator as in claim 7wherein said first and second control means comprise means responsive toroutines stored in the second memory means.
 9. A programmable electroniccalculator as in claim 5 wherein said second control means includesmeans operative for setting a security word in the first memory meansfrom said one or more external magnetic record members, includes meansfor examining the security word each time the calculator is directed tolist or record a program stored in the first memory means, and includesmeans for preventing any such listing or recording thereof when thesecurity word is set.
 10. A programmable electronic calculator as inclaim 9 wherein said first and second control means comprise meansresponsive to routines stored in the second memory means.